2011-02-17 83 views
0

我有一个win32 cpp dll和一个c#项目(PROJ_1),它们使用dllimport来调用win32 dll函数。这个dll包含到项目PROJ_1中,并且构建了复制到输出目录的操作。在c#项目中使用cpp dll

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

所以,现在我们有这样的事情PROJ_3-> PROJ_2-> PROJ_1(DLL)

所以,当我提出建立在VS 2010: 1.在PROJ_1的箱柜i具有的Win32 DLL。 2.在PROJ_2的bin中也是 3.但是在PROJ_3中没有win32 dll存在

问题是怎么解决的?

回答

0

我建议你添加非托管的DLL到PROJ3解决方案,并在属性中设置“复制到输出目录”为“始终复制”

0

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

1

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

作为侧面的问题 - 你有没有考虑编写C++/CLI包装?

+0

使用C++/CLI包装与dllimport是最佳实践吗? – cyssima 2011-02-17 14:46:28