c# - 一个解决方案中的非托管 DLL 项目和托管 WinForms 应用程序

标签 c# .net c++ visual-studio

我使用的是 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/

相关文章:

c# - 检查进程状态

java - 面向 Java、.NET 或 Ruby 的 Smalltalk 编译器

c++ - 为什么成员函数签名与函数签名的规范不同?

c# - 如何从 TestCleanup 方法中获取测试名称?

c# - 在64位版本服务器中从C#读取Excel文件

c# - C#中的静态成员继承

c# - 我可以在 C# 中通过引用传递原始类型吗?

c# - 在 Xamarin Forms 中加载页面时显示文本

c++ - 保存json文件后如何返回文件路径?

c++ - convertTo 在 opencv 中不起作用