如何将C ++ DLL项目添加到Visual Basic引用?

时间:2016-11-01 20:22:52

标签: c++ vb.net visual-studio dll

我正在使用Visual Studio 2015社区版,我按照Microsoft的教程创建了隐式dll https://msdn.microsoft.com/en-us/library/ms235636.aspx,并且我在C ++控制台应用程序中成功引用了dll(我这样做是为了查看它是否可行)。

当我尝试将dll项目添加到Visual Basic Windows窗体应用程序的引用时,我收到错误消息“无法添加对'DLL项目名称'的引用。”经过一些研究,我认为这是因为VB针对.NET框架,而C ++ DLL针对的是Windows,但这就是我设法弄清楚的。我非常感谢有关协调这一点的任何帮助,或者设置一些涉及C ++ DLL和使用dll的GUI项目的解决方案(我只是选择VB作为GUI,因为它非常快速且易于设置)。

请注意,DLL项目和Visual Basic项目都在同一个解决方案中。

2 个答案:

答案 0 :(得分:1)

您的教程无法帮助您从.NET调用代码,并且您认为它是一个.NET框架操作系统是正确的。问题。您可以使用p-invoke导入并调用DLL或在DLL周围创建COM包装器并在GAC中注册它,然后通过COM CreateObject调用引用它。

其他可能性是将其转换为C ++ / CLI .NET C ++ DLL。

参考文献:

P-Invoke

COM

<强> -UPDATE -

我想我还应该提一下,如果您的目标是通用Windows平台(UWP),它还提供了跨.NET和C ++的干净绑定,并隐藏了一些繁忙的COM连线。

答案 1 :(得分:0)

应该使用构建后事件&#34; xcopy&#34;将C ++ DLL添加到* .NET应用程序中像这样的命令:

xcopy "$(SolutionDir)DLL\$(ConfigurationName)"\*.dll "$(TargetDir)"*.* /Y
从您选择的项目

转到项目 - &gt;属性 - &gt;编译 - &gt;构建事件 - &gt;构建后事件命令行

输入适当的复制命令。

在上面的例子中,在&#34; DLL&#34;中收集了几个C ++ DLL。解决方案目录中的文件夹。每次构建应用程序时,它们都会被复制到应用程序文件夹中。这些DLL的DEBUG和RELEASE版本位于不同的子文件夹中。

正如其他海报所述,您还必须在* .NET代码中为C ++ DLL提供正确的p-invoke声明。