You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C++调用带DllExport的C# DLL时出现System.Runtime加载失败求助

解决C# DllExport调用时System.Runtime加载失败问题

以下是针对你遇到的System.IO.FileNotFoundException问题的具体解决方法:

  • 确认.NET 6运行时已安装
    你的C# DLL基于.NET 6构建,C++所在的目标机器必须安装对应版本的.NET运行时。优先安装.NET 6 Desktop Runtime(适配桌面应用场景),安装后重启进程再尝试调用。

  • 将C# DLL改为自包含部署
    打开C#项目属性,切换到发布选项卡:

    1. 选择“自包含”部署模式;
    2. 目标运行时选择win-x64(与你的C++平台一致);
    3. 重新发布项目,此时输出目录会包含所有.NET运行时依赖文件,C++进程加载DLL时可直接找到System.Runtime等组件。
  • 保证C++与C#项目平台一致
    确认你的C++项目编译目标为x64,与C# DLL的编译平台匹配,避免因32/64位架构不匹配引发的加载异常。

  • 校验函数调用约定匹配
    确保C#导出函数的调用约定与C++定义的一致:
    C#端导出代码示例:

    [DllExport("_add", CallingConvention = CallingConvention.Cdecl)]
    public static int Add(int a, int b)
    {
        return a + b;
    }
    

    若调用约定不匹配,即使能获取函数地址,调用时也可能触发异常,甚至间接导致依赖加载失败。

  • 手动复制依赖文件到C++执行目录
    若不想使用自包含部署,可将C# DLL输出目录中的System.Runtime.dll、System.Private.CoreLib.dll等核心依赖文件,复制到C可执行文件的同目录下,确保C进程能找到这些组件。

内容的提问来源于stack exchange,提问作者TomC

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.19 12:07:11