将C ++托管dll导入C#.NET项目时出现问题

时间:2015-08-06 10:28:12

标签: c# c++ dll marshalling dllimport

这似乎是标题中的重复问题,但让我澄清一下,我已经搜索并遵循不同的方法 基本上我必须将managed C++ dll导入C#项目。我咨询了一些教程,最后创建了一个managed C++ dll。现在,在导入dll时出现以下错误:

  

尝试加载格式不正确的程序

我找到了一些像this 这样的解决方案,但这些解决方案无法帮助我。在面对此错误之前,我必须先咨询this解决方案,然后再咨询this

以下是我尝试导入dll的屏幕截图:

设置:

Importing the dll fine using build settings

代码:

Calling the dll in the code

有人请指导我在项目中导入dll的正确方法。

2 个答案:

答案 0 :(得分:0)

此C ++库适用于某些体系结构(x64或x86)。另一方面C#不是(任何CPU),这就是为什么这种错误--C#最有可能假设你有一个x64非托管库。您应该将C#项目中的体系结构限制为其中任何一个(x64或x86),因此在两个项目中它们都是相同的。

答案 1 :(得分:0)

您是否应该将文件复制为预构建步骤?在构建之前确保它位于正确的位置。我也会删除exit 0,这是不需要的。

DllImport通常用于本机C风格的API,而不是托管和C ++ / CLI程序集。这些.Net程序集,无论是否为混合模式,都可以添加到通常的程序集依赖项位置中。

如果这是“托管C ++”而不是“C ++ / CLI”程序集,它也可能与目标.Net框架不兼容。