这个问题来自我之前的问题:Create DLL from unmanaged C++,但是您无需阅读它即可了解这个新问题。
现在,我有一个DLL,其中包含由一些函数组成的非托管C++代码,其中只有一个函数供外部使用。接下来,我需要在Managed C++项目(使用Common Language Runtime支持构建)中使用此DLL。到目前为止,我已经通过在Visual Studio 2010中设置Additional Include Directories
添加了对现有非托管项目的头文件的引用。
如果现在尝试添加对DLL文件的引用:MyManagedProject > Properties > Common Properties > Add New Reference > Browse > MyUnmanagedDLL.dll
,则会收到错误信息Could not add a reference to file MyUnmanagedDLL.dll because it is neither a .NET assembly nor a registered ActiveX control.
。但是,如果我使用前面提到的DLL并将其复制到托管C++可执行文件所在的文件夹中,则一切正常。
我不确定这是否是正确的方法,因为这似乎是一个棘手的解决方案。同样,这意味着我每次对DLL源代码进行更改时都必须复制DLL。
总结一下我的问题:
MyUnmanagedDLL.dll
。我还为此DLL创建了头文件。 MyManagedProject.vxproj
MyUnmanagedDLL.dll
中使用MyManagedProject.vxproj
?有没有正确的方法来引用它,还是应该将其复制到MyManagedProject.exe
所在的目录中? (这有效,但是我不确定它的良好实践...)额外信息:Windows 7,Visual Studio 2010 Ultimate,CMake 2.8.10.2
最佳答案
您不能将非托管DLL添加为对托管C++项目的引用。您只能使用托管DLL来做到这一点。相反,您要做的就是链接到非托管DLL,就像链接到非托管C++项目中的非托管DLL一样: