0
点赞
收藏
分享

微信扫一扫

.net开发实践: C#如何调用C/C++库

精进的医生 2022-02-14 阅读 182

最近工作需要研究下C#能否调用已有的C/C++库,为此写了个小demo总结分享一下,供大家参考

开发环境

Windows平台:

  • Visual Studio 2019
  • Visual Studio Code
  • .NET SDK 6

C/C++动态库

安装插件

vscode安装CMake Tools & C/C++插件
在这里插入图片描述

配置工程

通过CMake插件配置C++动态库工程
在这里插入图片描述

生成的文件有2个地方需要改动

  • add_library改为SHARED类型
add_library(MyNativeLibrary SHARED MyNativeLibrary.cpp)
  • cpp里实现导出接口
extern "C"
{
    __declspec(dllexport) int __stdcall add(int a, int b) {
        return a + b;
    }
}

编译生成

通过vscode底部build按钮编译,dll文件生成在build目录

C#工程

在cmd中使用dotnet命令创建console工程

> dotnet new console -o MyApp

修改Program.cs为如下内容

using System.Runtime.InteropServices;
namespace NetCore
{
  public class Program 
  {
      [DllImport(@"MyNativeLibrary\build\Release\MyNativeLibrary.dll", EntryPoint = 
       "add", CallingConvention = CallingConvention.StdCall)]
     public static extern int Add(int a, int b);
     public static void Main(string[] args)
     {
        int result = Add(1 ,2);
        Console.WriteLine("result is {0}", result);
        Console.ReadKey();
      }
   }
}

dotnet run就可以看到运行效果了

> dotnet run
result is 3

小结

本文演示了C#调用C/C++动态库的方法,动态库部分需要熟悉vscode及cmake的使用,希望对大家能有帮助

源码地址

dotnet/MyApp

参考资料

C#调用C++
.net tutorial
VS Code with CMake Tools

举报

相关推荐

0 条评论