【问题标题】:Incorrect format Exception while trying to call C++ dll from C#尝试从 C# 调用 C++ dll 时出现格式不正确的异常
【发布时间】:2016-04-13 08:34:42
【问题描述】:

我正在使用 C# WPF。
我有一个 C++ 测试 dll 如下:
.h:

extern "C" __delspec(dllexport) void TestMethod();

.cpp 文件:

extern "C"
{
    __delspec(dllexport) void TestMethod()
    {
        MessageBox(0, L"Test", L"Test", MB_ICONINFORMATION);
    }
}

C# 代码:

[DllImport("DllTest.dll", EntryPoint = "TestMethod")]
public static extern void TestMethod();

当我尝试调用 TestMethod 时出现异常:

an attempt was made to load a program with an incorrect format

我做错了什么?
谢谢!


【问题讨论】:

  • 我有类似[DllImport("DllTest.dll", CallingConvention = CallingConvention.Cdecl)] 的东西。指定调用约定有帮助吗?

标签: c# c++ wpf language-interoperability


【解决方案1】:

这似乎是32bit/ 64 bit 问题。似乎您的 C++ dll 和 C# 调用程序集是为不同的平台目标构建的。尝试为同一平台(x86 或 x64)编译两者,然后调用该函数。

【讨论】:

  • 谢谢!!!.. 我用另一个问题编辑我的帖子,如果我有多个函数,我需要替换什么 [DllImport("DllTest.dll", EntryPoint = "TestMethod" )] ?
  • @Evyatar 最好将其作为单独的问题发布。我们更喜欢一个问题一个问题的格式:)
  • @CompuChip,是的..我问了一个新问题:P
猜你喜欢
  • 1970-01-01
  • 2020-05-14
  • 2011-10-13
  • 1970-01-01
  • 2021-04-12
  • 2011-08-14
  • 1970-01-01
  • 2013-03-25
  • 1970-01-01
相关资源
最近更新 更多