2010-08-06 67 views
1

我的.net项目需要使用用C++编写的第三方类库。我已经尝试从项目的上下文菜单'Add a refence ...'直接添加对此DLL的引用,但它不起作用,因为我认为此DLL不实现COM对象模型。如何在.net项目中使用C++类库

我现在有什么选择?有些人建议围绕这个DLL创建一个.net包装器,但是我从来没有做过,所以我正在寻找一个简单的介绍,可能有一些例子。我过去做过的最接近的事情是使用pInvoke(例如来自win32.dll)从外部库调用方法,但在这种情况下,我可能还需要将本地C++类型包装为.net中的等效表示形式,是一些实例变量需要考虑,所以我不知道pInvoke是否足够。

我真的很感激,如果任何人都可以指出我在正确的方向,请让我知道是否需要更多信息。

非常感谢。

回答

2

假设你没有源库或者您无法将库转换为C++/CLI程序集的另一个原因。

您可能感兴趣的SWIG(http://www.swig.org/)封装发生器。您可以将SWIG的公共接口提供给一个C++库,并为它支持的任何后端语言(C#碰巧是其中之一)编写一个封装器。

+0

似乎很好的工具。 – user001 2010-08-06 09:22:16

1

正如你所说的有2种方式来做到这一点:

1)通过导入使用P/Invoke C++函数。

2)通过将非托管代码封装到mananged中,并使用'Add Reference'将.net应用程序添加到.net应用程序中。 Here就是这个简单的例子。

This链接将为您提供.net互操作性的详细信息。

在这些P/Invoke中是最简单的方法。对于.NET中的C++等价类型,你可以做封送处理,这也很容易,你会发现许多教程相同。

相关问题