主要技术:使用NET的AOT编译
准备:需要C++桌面开发
工具:VS2022
创建类库项目(后面不带Framework的)
项目类型推荐使用NET7或NET8
右键项目-编辑项目文件,在内添加AOT相关配置
<!--AOT 相关-->
<PublishAot>true</PublishAot><!-- 这行关键,下面的属于减小体积 -->
<TrimMode>full</TrimMode>
<RunAOTCompilation>True</RunAOTCompilation>
<PublishTrimmed>true</PublishTrimmed>
<TrimmerRemoveSymbols>true</TrimmerRemoveSymbols>
<PublishReadyToRunEmitSymbols>false</PublishReadyToRunEmitSymbols>
<EnableUnsafeUTF7Encoding>true</EnableUnsafeUTF7Encoding>
<InvariantGlobalization>true</InvariantGlobalization>
<HttpActivityPropagationSupport>false</HttpActivityPropagationSupport>
<MetadataUpdaterSupport>true</MetadataUpdaterSupport>
<UseSystemResourceKeys>true</UseSystemResourceKeys>
<IlcDisableReflection >true</IlcDisableReflection>
编写代码
using System.Runtime.InteropServices;
namespace Test_Net8;
public class Class {
//导出函数,供他人调用
[UnmanagedCallersOnly(EntryPoint = "Add")]
public static int Add(int a, int b) {
return a + b;
}
}
编译发布
![直接点完成
发布成功后,DLL就生成了
.pdb删了就行,现在这个dll就是个C++的dll了,暴露函数为Add和DotNetRuntimeDebugHeader(这玩意不用管)
有这技术谁还学C++啊