一个软件开发工具包通过C++类库提供了一些API,包括h、lib、dll文件。
但是,我想使用C#来处理这个库。
那么,有没有工具可以把C++类库打包成C#呢?或者一些建议?
我不想使用CLI,因为有太多的类。
发布于 2011-06-12 22:44:16
使用C++/CLI,这是.NET平台上的托管代码中使用的C++方言。该语言主要是为您的应用程序设计的。
请看这个article (标题有点夸张,但内容很好)。对C++代码包装器的其他搜索应该会给出更多的示例。
正如Barry所指出的,使用平台调用(P/ invoke )调用将允许您从DLL调用本机代码。
发布于 2011-06-12 22:43:16
如果您想手动包装库,可以直接使用C++/CLI在您的API或P/Invoke周围创建托管包装器,以便直接从C#调用本机代码。
如果你想自动创建一个包装器,我相信SWIG项目已经提供了一个C/C++ => C# module。SWIG模块在幕后使用P/Invoke (所以,作者声称,它也可以在Mono上使用)。它似乎可以为您处理P/Invoke包装器的许多细节(.Net和Mono)。我还没用过,但它似乎就是你要找的。
发布于 2011-06-12 22:45:03
您可以做的一件事是在C++类库周围构建一个COM包装器。将C++类打包为COM对象后,您将能够在C#代码中使用它们。
参见http://msdn.microsoft.com/en-us/library/aa645736(v=vs.71).aspx ("COM Interop Part 1: C#客户端教程“)
如果您需要有关如何将C++库包装到COM中的信息,我可以建议您阅读Microsoft Press的优秀书籍"Inside COM“。
https://stackoverflow.com/questions/6322495
复制相似问题