pinvoke c 函数 - System.BadImageFormatException

Posted

技术标签:

【中文标题】pinvoke c 函数 - System.BadImageFormatException【英文标题】:pinvoke c function - System.BadImageFormatException 【发布时间】:2014-01-31 17:23:51 【问题描述】:

我试图从 C# 调用一个 C 函数,但我得到一个 BadImageFormatException。

这里是C函数头:

extern "C"

    __declspec(dllexport) bool validate(char key[]);

这是我从 C# 调用它的方式

[DllImport("MyDll.dll")]
static extern bool validate(char[] key);

这里有什么问题。

【问题讨论】:

尝试显式编译为 64 位或 32 位。 是的,就是这样。谢谢。将其添加为答案。 【参考方案1】:

调用本机方法时,您应该将您的 c# 代码显式编译为 64 位或 32 位。

 project/properties/build/Platform target

【讨论】:

【参考方案2】:

使用Dependency Walker 检查“验证”函数是否正确地从 DLL 导出。 您可能尚未更新 DLL 项目的 .def 文件。

【讨论】:

以上是关于pinvoke c 函数 - System.BadImageFormatException的主要内容,如果未能解决你的问题,请参考以下文章

C#通过PInvoke调用c++函数的备忘录

IndexOutOfRangeException - 无法使用 PInvoke 查看调用堆栈

C# PInvoke 传递出 unsigned char*

Monotouch PInvoke System.EntryPointNotFoundException

Windows Mobile 平台上的 PInvoke

在具有 ui/非 ui 线程差异的 WPF 中使用 PInvoke