我最近一直在努力解决一个在C#中实施得很糟糕的算法(即开发人员被拉到另一个项目而未能充分记录他所做的事情).
我找到了一个替代方案(来自数字配方),但它是用C++编写的.因此,我认为最安全的方法是将C++包装在DLL中.
请记住,在C#方面我仍然有点绿,并且从未尝试过从头开始创建DLL,这听起来像是一种合理的方法(如果是这样,有人试过这个/得到任何建议)吗?或者我应该全力以赴并尝试将C++例程移植到C#中?
编辑 - 我不是在寻找任何人为我做出决定,但如果有人对任何一条路线有任何表现,我都会有兴趣听到他们的意见和应该避免的任何令人讨厌的陷阱.例如,将C#中的数据列表传递给C++ STL向量有多讨厌?
我尝试从 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)