如何在C ++项目中使用DLL库文件?

时间:2009-12-06 20:40:09

标签: c# c++ visual-studio-2008 dll

我有一个C ++项目和一个使用C#编写的DLL库。是否可以将其添加到C ++项目并使用其方法?我正在使用Visual Studio 2008

2 个答案:

答案 0 :(得分:3)

我知道有两种选择:

1)您可以使用COM支持编译C#DLL,然后通过COM从C ++访问它。这将涉及COM Interop,它可能比托管到.NET的托管调用慢。

要编译具有COM支持的C#DLL,请转到项目的Properties-> Application-> Assembly Information-> Make assembly COM-Visible。您使用regasm在用户计算机上注册DLL。这类似于使用regsvr32,除了regasm用于.NET DLL:

http://www.csharphelp.com/archives/archive190.html

我个人也将/ CODEBASE开关与regasm用于我打算仅供COM使用的DLL。它仍然可以在没有/ CODEBASE开关的情况下工作,但DLL也会出现在全局程序集缓存中,这只会增加GAC的混乱,并为您注入我不需要的COM互操作方案的许多功能。 / p>

您也可以在Build下设置“Register for COM-Interop”,但这不是必需的。它在反复调试时非常有用,因为它会在您编译时在您的机器上注册COM DLL和regasm。它与DLL本身并没有任何关系。您仍然需要在用户的计算机上重新计算DLL。

注册后,您应该能够向C#DLL添加COM引用,并从本机C ++中调用它,就像使用任何其他COM组件一样。

2)您可以将C ++项目编译为托管C ++ / CLI项目,允许您引用.NET DLL,例如C#DLL。我认为如果C ++ / CLI不是您的问题,这将是更好的选择。 C ++ / CLI代码和C#DLL之间的调用应该比COM Interop更好,但另一方面,C ++ / CLI本身比本机C ++稍慢。

答案 1 :(得分:1)

相关问题