目录
- 背景
- C# 部分
- 环境要求
- 创建一个控制台项目
- 体验 AOT 编译
- C# 调用库函数
- 减少体积
- C# 导出函数
- C# 调用 C# 生成的 AOT
- Golang 部分
- 安装 GCC
- Golang 导出函数
- .NET C# 和 Golang 互调
- C# 调用 Golang
- Golang 调用 C#
- 其他
最近时总更新太快了 , 太卷了 , 所以借着 .NET 7 正式版发布 , 熬夜写完这篇文章 , 希望能够追上时总的一点距离 。
本文主要介绍如何在 .NET 和 Go 语言中如何生成系统(Windows)动态链接库 , 又如何从代码中引用这些库中的函数 。
在 .NET 部分 , 介绍如何使用AOT、减少二进制文件大小、使用最新的
[LibraryImport]
导入库函数;在 Go 语言部分 , 介绍如何使用 GCC 编译 Go 代码、如何通过
syscall
导入库函数 。在文章中会演示 .NET 和 Go 相互调用各自生成的动态链接库 , 以及对比两者之间的差异 。
本文文章内容以及源代码 , 可以 https://github.com/whuanle/csharp_aot_golang 中找到 , 如果本文可以给你带来帮助 , 可以到 Github 点个星星嘛 。
C# 部分环境要求SDK:.NET 7 SDK、Desktop development with C++ workload 。
IDE:Visual Studio 2022
Desktop development with C++ workload
是一个工具集 , 里面包含 C++ 开发工具 , 需要在 Visual Studio Installer
中安装 , 如下图红框中所示 。文章插图
创建一个控制台项目首先创建一个 .NET 7 控制台项目 , 名称为
CsharpAot
。打开项目之后 , 基本代码如图所示:
文章插图
我们使用下面的代码做测试:
public class Program{static void Main(){Console.WriteLine("C# Aot!");Console.ReadKey();}}
体验 AOT 编译这一步 , 可以参考官方网站的更多说明:https://learn.microsoft.com/zh-cn/dotnet/core/deploying/native-aot/
为了能够让项目发布时使用 AOT 模式 , 需要在项目文件中加上
<PublishAot>true</PublishAot>
选项 。文章插图
然后使用 Visual Studio 发布项目 。
发布项目的配置文件设置 , 需要按照下图进行配置 。
文章插图
AOT 跟配置完成后 , 点击生成单个文件
两个选项不能同时使用 , 因为 AOT 本身就是单个文件 。
发布
, 然后打开 Release
目录 , 会看到如图所示的文件 。文章插图
.exe
是独立的可执行文件 , 不需要再依赖 .NET Runtime
环境 , 这个程序可以放到其他没有安装 .NET 环境的机器中运行 。然后删除以下三个文件:
CsharpAot.expCsharpAot.libCsharpAot.pdb
光用剩下.exe
即可运行 , 其他是调试符号等文件 , 不是必需的 。
CsharpAot.exe
文件后 , 启动这个程序:
经验总结扩展阅读
- 2023年9月10日是安装窗帘的黄道吉日吗 2023年9月10日安装窗帘好吗
- 我的Vue之旅 10 Gin重写后端、实现页面详情页 Mysql + Golang + Gin
- 螺蛳粉要泡多久
- 2023年9月10日是买房的黄道吉日吗 2023年9月10日适合买房吗
- 2023年9月10日旅游好不好 2023年9月10日旅游好吗
- 2023年9月10日游玩好不好 2023年9月10日游玩行吗
- 2023年9月10日适合踏青吗 2023年9月10日踏青好吗
- 燕麦怎么煮
- 2023年9月10日出差行吗 2023年9月10日出差好不好
- 2023年9月10日适合坐船吗 2023年9月10日是坐船的黄道吉日吗