3

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

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

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

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

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

问候, 马克苏德

4

4 回答 4

3

看看在
c# 代码中使用 c++ dll 中定义的类

于 2009-12-23T08:24:26.397 回答
2

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

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

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

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

于 2009-12-23T06:14:54.167 回答
1

根据 DLL 和您需要执行的操作,您可能不需要直接创建包装器。您可能能够摆脱P/Invoke的功能。您将需要评估您的特定需求以及提供的库/代码中已有的内容。

于 2009-12-23T06:12:35.357 回答
0

对于遇到这个问题并正在寻找答案的任何人,您可能想尝试xInterop NGen++ ,这是一个刚刚向公众发布的原生 C++ DLL 的 C# 包装器生成器,该工具可以自动为原生 C++ DLL 生成 C# 包装器并立即通过使用先进的 P/Invoke 技术。查看当前版本,免费版本即将推出。

(我是该工具的作者)

于 2014-04-11T01:01:59.877 回答