在我的项目中,我得到了一个带有C ++示例代码的设备。代码正常,设备正在按预期工作。
但我需要它与我的C#接口交谈,因为所有其他设备当前都在使用C#接口。
所以我打算为驱动程序创建一个DLL Wrapper。我将创建一个自己的C ++库(来自具有适当接口的源代码)并使用DLLImport从C#调用此C ++库(只需在那里调用我的接口。)。
我很确定它可以通过这种方式完成,但我从未创建过C ++库,而是从C#中使用它。那么,任何人都可以向我推荐一些与我的问题相关的教程吗?
我正在使用C ++ / C#int VS.NET 2008。
此致 Maksud
答案 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技术。查看当前版本,很快就会推出免费版本。
(我是该工具的作者)