mohuangNPC 2024-03-06 10:15 采纳率: 25%
浏览 56

CLion生成的dll,C#无法调用

CLion生成的dll,C#无法调用

img

img

img


如图这是clion的代码,很简单也编译成功了,正常的clion是可以调用生成的dll的,但是C#调用就报错System.BadImageFormatException : 试图加载格式不正确的程序。 (异常来自 HRESULT:0x8007000B),网上大多数资料都说是位数不正确但是我clion用的的确是

img


如图64位的,请问这还有可能是什么错误导致的?

img


这是调用代码

  • 写回答

5条回答 默认 最新

  • 百锦再@新空间创想科技 优质创作者: 编程框架技术领域 2024-03-06 10:15
    关注

    // 这是clion生成dll的代码#include <
    iostream>

    extern "
    C"
    {__declspec(dllexport) void hello() {std::cout <
    <
    "
    Hello from DLL!"
    <
    <
    std::endl;
    }}
    // 这是C#调用dll的代码using System;
    using System.Runtime.InteropServices;

    class Program{[DllImport("
    yourdllname.dll"
    , CallingConvention = CallingConvention.Cdecl)]public static extern void hello();

    static void Main(string[] args){hello();
    }}

    如果您的代码配置和代码本身都没有问题,但是仍然出现BadImageFormatException,可能是由于dll依赖项引起的问题。您可以使用工具如Dependency Walker来检查dll文件的依赖项,并确保它们和您的系统和项目配置相匹配。另外,还可以尝试使用Any CPU编译选项重新编译您的C#项目,看看是否可以解决问题。


    有问题你别着急,评论留言都可以,看到马上就回复,尽量及时补充齐
    评论

报告相同问题?

问题事件

  • 创建了问题 3月6日