有没有任何工具可以将一些C++类打包到C#中

Are there any tools could package some C++ class to C#?

本文关键字:C++ 工具 任何 有没有      更新时间:2023-10-16

一个软件SDK通过C++类库提供了一些API,包括h、lib、dll文件。

但是,我想使用C#来处理库。

那么,有什么工具可以将C++类库打包到C#中吗?或者一些建议?

我不想使用CLI,因为类太多了。

使用C++/CLI,这是上托管代码中使用的C++方言。NET平台。该语言主要是为在像您这样的应用程序中使用而设计的。

请看这篇文章(标题有点夸张,但内容不错)。其他对C++代码包装器的搜索应该会为您提供更多的示例。

正如Barry所指出的,使用平台调用(p/invoke)调用可以从DLL调用本机代码。

如果要手动包装库,可以直接使用C++/CLI在API周围创建托管包装,或者使用p/Invoke直接从C#调用本机代码。

如果你想自动创建一个包装器,我相信SWIG项目有一个C/C++=>C#模块。SWIG模块在后台使用P/Invoke(因此,作者声称,它在Mono上也可用)。它似乎可以为您处理P/Invoke包装器的许多细节(.Net和Mono)。我没有用过,但它似乎正是你想要的。

您可以做的一件事是围绕C++类库构建COM包装器。一旦C++类被打包为COM对象,您就可以从C#代码中使用它们。

参见http://msdn.microsoft.com/en-us/library/aa645736(v=vs.71).aspx("COM互操作第1部分:C#客户端教程")

如果你需要关于如何将C++库包装到COM中的信息,我可以建议你阅读微软出版社的优秀书籍《内部COM》。