一个软件SDK通过C ++类库提供一些API,包括h,lib,dll文件。
但是,我想使用C#来处理库。
那么,有没有工具可以将C ++类库打包到C#?或者一些建议?
我不想使用CLI,因为有很多类。
答案 0 :(得分:2)
如果要手动包装库,可以使用C++/CLI围绕API创建托管包装,或P/Invoke直接从C#调用本机代码。
如果你想自动创建一个包装器,我相信SWIG项目有一个C / C ++ => C#module。 SWIG模块使用引擎盖下的P / Invoke(因此,作者声称,它也可以在Mono上使用)。它似乎为您处理P / Invoke包装器的许多细节(.Net和Mono)。我没有使用它,但它似乎是你正在寻找的。 p>
答案 1 :(得分:2)
使用C++/CLI,即.NET平台上托管代码中使用的C ++方言。该语言主要用于在您的应用程序中使用。
请参阅此article(标题有点夸张,但内容很好)。对C ++代码包装器的其他搜索应该会给你更多的例子。
正如Barry指出的那样,使用平台调用(P / Invoke)调用可以让你从DLL调用本机代码。
答案 2 :(得分:1)
您可以做的一件事是在C ++类库周围构建一个COM包装器。将C ++类打包为COM对象后,您就可以从C#代码中使用它们。
参见http://msdn.microsoft.com/en-us/library/aa645736(v=vs.71).aspx(“COM Interop第1部分:C#客户端教程”)
如果您需要有关如何将C ++库包装到COM中的信息,我建议您阅读Microsoft Press的优秀书籍“Inside COM”。