从C#应用程序或端口调用C++代码吗?

Jon*_*age 5 c# c++ dll port

我最近一直在努力解决一个在C#中实施得很糟糕的算法(即开发人员被拉到另一个项目而未能充分记录他所做的事情).

我找到了一个替代方案(来自数字配方),但它是用C++编写的.因此,我认为最安全的方法是将C++包装在DLL中.

请记住,在C#方面我仍然有点绿,并且从未尝试过从头开始创建DLL,这听起来像是一种合理的方法(如果是这样,有人试过这个/得到任何建议)吗?或者我应该全力以赴并尝试将C++例程移植到C#中?

编辑 - 我不是在寻找任何人为我做出决定,但如果有人对任何一条路线有任何表现,我都会有兴趣听到他们的意见和应该避免的任何令人讨厌的陷阱.例如,将C#中的数据列表传递给C++ STL向量有多讨厌?

Ann*_*naR 3

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

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

下面是一些可以帮助您入门的代码:

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();

    }
}
Run Code Online (Sandbox Code Playgroud)