我最近一直摔跤与其严重实现的算法(即开发商被拉开到另一个项目,并未能充分记录他所做的一切)在C#中。

我发现其中工程但用C ++编写的替代方案(从数值配方)。所以我想可能得到的东西的工作将是包装在一个DLL的C ++了最安全的方式。

铭记我还是有点绿色的,当涉及到C#和从未尝试从头开始做一个DLL,这听起来像一个合理的方法(如果有的话,有没有人试过这种/有任何建议) ?或者我应该干到底,并尝试和端口C ++程序到C#?

修改 - 我不希望任何人作出的决定对我来说,但如果任何人有任何途径的任何先进经验我很想听听他们的意见和任何讨厌的陷阱应避免。例如,如何在讨厌数据列表被传递从C#到C ++ STL矢量?

有帮助吗?

解决方案

我试图链接到C-DLL的从效果颇佳的C#代码,即使我有一些问题发送环境之间的数据。否则,过程很简单。数据越多,你来回发送(包括数量和频率)慢你的程序将运行,但你可能已经想通了这一点你自己了。

的主要缺点是保持该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();

    }
}

其他提示

如果C#版本米奇引用是为您的目的合适许可证的不是,你可以使用一个托管C ++包装,也可以重用,并包裹你的C代码,但仍然可以看到你的托管应用程序为原生.NET程序集。我已经在过去使用这种方法的使用没有自己的本机.NET API库的C API,以及两者之间找到了相对无痛编组数据。

...或者你可以从这里下载已实施的代码在C#

这取决于你的目标是什么。

如果它是有一个工作的应用程序我权衡了两种方法的成本和收益,并用最经济有效的去了。

如果这是提高你的C#,然后通过各种手段改写℃。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top