创建C ++ Dll,并从C#中调用它

时间:2009-12-23 05:43:58

标签: c# visual-c++ dll dllimport

在我的项目中,我得到了一个带有C ++示例代码的设备。代码正常,设备正在按预期工作。

但我需要它与我的C#接口交谈,因为所有其他设备当前都在使用C#接口。

所以我打算为驱动程序创建一个DLL Wrapper。我将创建一个自己的C ++库(来自具有适当接口的源代码)并使用DLLImport从C#调用此C ++库(只需在那里调用我的接口。)。

我很确定它可以通过这种方式完成,但我从未创建过C ++库,而是从C#中使用它。那么,任何人都可以向我推荐一些与我的问题相关的教程吗?

我正在使用C ++ / C#int VS.NET 2008。

此致 Maksud

4 个答案:

答案 0 :(得分:3)

答案 1 :(得分:2)

您可以使用的另一个有用工具是C++ CLI

您可以使用C ++ CLI创建一个中间库 - 一个公开托管类但运行非托管C ++代码的库。实际上,您可以在同一个DLL中混合托管和非托管C ++。

非托管部分可以访问非托管DLL,而无需使用PInvoke函数。

您的C#代码可以访问此中间库中的托管类。

答案 2 :(得分:1)

根据DLL和您需要执行的操作,您可能不需要直接创建包装器。您可以使用P/Invoke来完成这些功能。您需要评估您的特定需求以及所提供的库/代码中已有的内容。

答案 3 :(得分:0)

对于遇到此问题且正在寻找答案的任何人,您可能想尝试xInterop NGen++ , a C# wrapper generator for native C++ DLL,该工具刚刚向公众发布,该工具可以自动生成本地C ++ DLL的C#包装器并立即通过使用先进的P / Invoke技术。查看当前版本,很快就会推出免费版本。

(我是该工具的作者)