我使用的是 Visual Studio 2008 Professional,我需要创建包含两个项目的解决方案。第一个项目是托管 WinForms C# 项目,第二个是非托管 DLL C++ 项目。
我在 VS2008 中创建了它们,在非托管 DLL 项目中我导出了返回一些 int 的简单函数。在托管 WinForms 项目中,我以通常的方式导入 DLL 并尝试在标签中打印返回值:
[DllImport("DllProj.dll", EntryPoint = "GetSomeInt", SetLastError = true)]
private static extern int GetSomeInt();
但是当我构建解决方案并运行时,我得到了 DllNotFoundException
。我还尝试将现有项目 (DllProj.dll
) 添加到 WinForms 项目,但它只将该 dll 从其 Debug 文件夹复制到具有 WinForms 项目的文件夹,而不是在编译项目所在的 Debug 子文件夹中居住。所以我仍然收到 DllNotFoundException
。
我也尝试将其添加为引用,但 VS2008 提示我的 DLL 不是 COM 或托管对象。有没有什么方法可以让我不需要在每次构建后手动将已编译的 DLL 复制到 WinForms 项目的 Debug 子文件夹中?
最佳答案
您应该将 dll 拷贝添加到后期构建事件中。
请参阅项目属性>构建事件>构建后事件命令行
。
关于c# - 一个解决方案中的非托管 DLL 项目和托管 WinForms 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5168499/