原生C++;dll与C#项目集成在一个解决方案中 我有一个源文件,用C++编写,进行一些仿真。我想在C#中为此创建一个用户界面。如何在单个VisualStudio解决方案中同时拥有C++和C**?< /P>

原生C++;dll与C#项目集成在一个解决方案中 我有一个源文件,用C++编写,进行一些仿真。我想在C#中为此创建一个用户界面。如何在单个VisualStudio解决方案中同时拥有C++和C**?< /P>,c#,c++,visual-studio,visual-studio-2012,dll,C#,C++,Visual Studio,Visual Studio 2012,Dll,到目前为止,我所做的是创建了一个.NETC#项目和解决方案,然后创建了一个本地项目作为DLL库。我已经将C++项目标记为“取决于”C++ DLL。我已经提供了必要的dllexport指令,并使用DllImport导入。一切都可以编译,但当我执行应用程序时,找不到dll: 无法加载DLL“xxxx.DLL”:找不到指定的模块 P>不奇怪DLL没有找到,因为应用程序从它的输出目录运行,并且输出目录对于C和C++项目是不同的。我不希望将显式路径作为导入写入,如“`.\..\Debug\xxxxx.d

到目前为止,我所做的是创建了一个.NETC#项目和解决方案,然后创建了一个本地项目作为DLL库。我已经将C++项目标记为“取决于”C++ DLL。我已经提供了必要的
dllexport
指令,并使用
DllImport
导入。一切都可以编译,但当我执行应用程序时,找不到dll:

无法加载DLL“xxxx.DLL”:找不到指定的模块

<> P>不奇怪DLL没有找到,因为应用程序从它的输出目录运行,并且输出目录对于C和C++项目是不同的。我不希望将显式路径作为导入写入,如“`.\..\Debug\xxxxx.dll”


有没有一种常见的方法来构造一个包含本地DLL和C++应用程序的解决方案,以便C应用程序可以调用本地Dll?< /P> < P>我找到了一个非常舒服的方法,这可能有一些意想不到的缺点,但到目前为止我还没有看到:我可以为C++DLL项目启用CLR,使它“混合”,即使它实际上不包含任何托管代码,那么构建它的项目也可以在C#.NET项目中作为参考

要使项目混合模式设置为
配置属性
/
常规
/
公共语言运行时支持
公共语言运行时支持(/clr)


在此之后,构建系统自动将DLL复制到应用程序输出文件夹。

< P>如果您知道部署后,C++的DLL将与您的C*YDLL(或可执行文件)处于同一文件夹中,那么解决问题的简单方法是使用PuxBug事件(Project Projts,Bug事件)。

可以添加一个复制命令,将C++的DLL放入C++输出文件夹中。< /P>可以添加一个PASBuW命令,将C++ DLL复制到C输出文件夹中,不确定这是否是最佳做法,尽管暴力解决方案是将其放在c:\windows\system32\中,或者您必须将其放在工作目录中。@ppetrov这是我建议的-您应该将其作为实际的answer@DrewMcGowen答案很短,但这是解决问题的一种方法,所以谢谢你的建议,作为答案发布;)究竟是哪一个设置使您的C++项目引用到您的本地Win32 C++项目中工作?@ NoNeNeXIAL添加到答案中。