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

如何在C# ASP.NET项目中调用已添加引用的C++ DLL函数?

解决C# ASP.NET调用C++ DLL的问题

你的核心问题在于:原生C++ DLL和.NET程序集的调用逻辑完全不同,直接添加引用+using的方式只适用于.NET类库(包括托管C++ DLL),如果你的MathLibrary是原生C++编写的,这种方法肯定行不通。下面分两种情况给你具体解决方案:

一、如果MathLibrary是原生C++ DLL(非.NET托管)

这种情况需要用P/Invoke(平台调用)来桥接C#和原生C++函数,步骤如下:

  1. 确保C++函数已正确导出
    首先要在C代码里标记要暴露给外部的函数,同时避免C的名字修饰问题,示例代码:

    // MathLibrary.cpp
    extern "C" __declspec(dllexport) int Add(int num1, int num2)
    {
        return num1 + num2;
    }
    
    • extern "C":禁用C++的名字重整,让C#能找到正确的函数名
    • __declspec(dllexport):标记该函数为可导出状态
  2. 在C#中声明要调用的函数
    在你的ASP.NET项目里,引入System.Runtime.InteropServices命名空间后,用[DllImport]属性声明原生函数:

    using System.Runtime.InteropServices;
    
    public static class MathLibraryHelper
    {
        // 注意匹配DLL文件名和函数名,调用约定要和C++一致(C++默认是Cdecl)
        [DllImport("MathLibrary.dll", CallingConvention = CallingConvention.Cdecl)]
        public static extern int Add(int num1, int num2);
    }
    
  3. 确保DLL能被程序找到

    • 把编译好的MathLibrary.dll复制到ASP.NET项目的输出目录(比如bin/Debug/net6.0,根据你的.NET版本调整)
    • 如果是x86/x64架构的DLL,要确保ASP.NET项目的平台目标(右键项目→属性→生成→平台目标)和DLL一致,比如DLL是x64,项目就不能选Any CPU(尤其是在IIS运行时)
    • 要是在IIS里部署,还要检查应用程序池的“启用32位应用程序”选项是否和DLL架构匹配(x64的话要关掉这个选项)

二、如果MathLibrary是托管C++ DLL(CLR)

如果你的C++项目是基于.NET CLR的,那应该能直接用using引用,问题可能出在这几点:

  1. 确认C++项目启用了CLR支持
    右键MathLibrary项目→属性→常规→公共语言运行时支持,选择“公共语言运行时支持(/clr)”(老版本VS可能叫“托管C++支持”)

  2. 确保C++代码的类/函数是公开的
    要在C++里用public ref class定义公开的类,并且放在MathLibrary命名空间下:

    namespace MathLibrary
    {
        public ref class Calculator
        {
        public:
            static int Add(int num1, int num2)
            {
                return num1 + num2;
            }
        };
    }
    
  3. 重新生成并更新引用
    先重新编译MathLibrary生成最新的DLL,然后在ASP.NET项目里移除旧引用,重新添加对MathLibrary项目的引用(直接引用项目比引用DLL文件更可靠)

额外注意事项

  • 如果原生C++ DLL依赖其他库(比如Visual C运行时库),要确保这些依赖项也在运行目录里,或者在服务器上安装对应的Visual C Redistributable包
  • 调试时可以用Dependency Walker工具检查DLL的依赖是否完整,避免因为缺少依赖导致调用失败

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 08:38:25