我最近一直在努力解决 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/