在c#项目中使用c ++ dll

时间:2011-02-17 13:57:55

标签: c# winapi dll dllimport

我有一个win32 cpp dll和一个c#项目(PROJ_1),它使用dllimport来调用win32 dll函数。这个dll包含在项目PROJ_1中,并将构建操作作为副本输出到目录。

另一个c#项目(PROJ_2)引用了PROJ_1 和PROJ_3引用PROJ_2。

所以,现在我们有这样的东西PROJ_3-> PROJ_2-> PROJ_1(dll)

所以,当我在VS 2010中进行构建时: 1.在PROJ_1的bin中我有win32 dll。 2.也在PROJ_2的bin中 但是在PROJ_3中 - 没有win32 dll存在

如何解决它有什么问题?

3 个答案:

答案 0 :(得分:1)

如果项目在一个VS解决方案中,您是否正确定义了项目之间的依赖关系(右键单击项目 - >项目依赖项)?是否为同一目标架构(64/86)构建了所有项目?

作为附带问题 - 您是否考虑过编写C ++ / CLI包装器?

答案 1 :(得分:0)

我建议您将该非托管DLL添加到PROJ3解决方案中,并在属性集“复制到输出目录”中添加到“始终复制”

答案 2 :(得分:0)

您可以检查对PROJ_2的引用的“复制本地”属性。 在PROJ_1中,将win32 dll添加到您的解决方案中(无需参考,只需将其添加为文件就像解决方案中的类一样)并设置属性Build Action = Content,Copy to Output Directory = Copy always。