page contents

C#如何调用C/C++库

本文讲述了C#如何调用C/C++库!具有很好的参考价值,希望对大家有所帮助。一起跟随六星小编过来看看吧,具体如下:

attachments-2022-09-EaPXtoSF63291ce2773c4.png

本文讲述了C#如何调用C/C++库!具有很好的参考价值,希望对大家有所帮助。一起跟随六星小编过来看看吧,具体如下:

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

开发环境

Windows平台:

Visual Studio 2019

Visual Studio Code

.NET SDK 6

C/C++动态库

安装插件

vscode安装CMake Tools & C/C++插件

attachments-2022-09-DwLAlOPt63291c7a64aa3.png

配置工程

通过CMake插件配置C++动态库工程

attachments-2022-09-Vza09Cqd63291c927a2b1.png

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

add_library改为SHARED类型

add_library(MyNativeLibrary SHARED MyNativeLibrary.cpp)

1

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的使用,希望对大家能有帮助

更多相关技术内容咨询欢迎前往并持续关注六星社区了解详情。

想高效系统的学习Python编程语言,推荐大家关注一个微信公众号:Python编程学习圈。每天分享行业资讯、技术干货供大家阅读,关注即可免费领取整套Python入门到进阶的学习资料以及教程,感兴趣的小伙伴赶紧行动起来吧。

attachments-2022-05-rLS4AIF8628ee5f3b7e12.jpg

  • 发表于 2022-09-20 09:52
  • 阅读 ( 309 )
  • 分类:C/C++开发

你可能感兴趣的文章

相关问题

0 条评论

请先 登录 后评论
轩辕小不懂
轩辕小不懂

2403 篇文章

作家榜 »

  1. 轩辕小不懂 2403 文章
  2. Pack 1131 文章
  3. 小柒 1046 文章
  4. Nen 576 文章
  5. 王昭君 209 文章
  6. 文双 71 文章
  7. 小威 64 文章
  8. Cara 36 文章