c# - 从 C# 应用程序调用 C++ 代码或移植它?

标签 c# c++ dll port

我最近一直在努力解决 an algorithm这在 C# 中实现得很糟糕(即开发人员被拉到另一个项目并且未能充分记录他所做的事情)。

我找到了一个替代方案(来自数字食谱),它可以工作但是是用 C++ 编写的。所以我认为让某些东西正常工作的最安全方法可能是将 C++ 封装在一个 DLL 中。

请记住,我对 C# 还是有点陌生​​,并且从未尝试过从头开始制作 DLL,这听起来像是一种合理的方法吗(如果是的话,有没有人尝试过这个/得到过任何建议) ?或者我应该全力以赴,尝试将 C++ 例程移植到 C# 中吗?

编辑 - 我不是在寻找任何人为我做决定,但如果有人对任何一条路线有任何经验,我很想听听他们的意见和任何应该避免。例如,将数据列表从 C# 传递到 C++ STL vector 有多讨厌?

最佳答案

我尝试从 C# 代码链接到 c-dll,结果非常好,尽管我在环境之间发送数据时遇到了一些问题。否则程序非常简单。您来回发送的数据越多(数量和频率),您的程序运行速度就越慢,但您可能已经自己解决了这个问题。

主要缺点是每次发生更改或有人发现错误时都需要维护 c#-c 胶水代码(接口(interface)代码)。

这里有一些代码可以帮助您入门:

using System.Runtime.InteropServices;
    class myDllCaller {

       //call to function in the dll returning an int
      [DllImport("MyFavorite.dll")]
      private static extern int dllFunction(//list of parameters to function);

    public static void Main() {
    int rerult = dllFunction();

    }
}

关于c# - 从 C# 应用程序调用 C++ 代码或移植它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/838816/

相关文章:

c# - 是否可以为控制台编写扩展方法?

c# - 提示用户在 Xamarin Forms 中启用蓝牙

c++ - 我应该如何创建 Clang NamedDecl 实例?

java - 无法在 64 位 java 程序中加载 64 位 DLL

c# - HRESULT 异常 : 0x80040111 (CLASS_E_CLASSNOTAVAILABLE)

c# - 如何在 C# 中将 byte[] 转换为日期时间?

c# - Entity Framework 核心数据库首先不渲染存储过程模型?

c++ - 使用 CMake 构建 PubNub C++

c++ - 如何查看两个char变量是否彼此相等

c++ - 延迟加载 crypto++ cryptopp.dll