aot跨平台
dotnet8不支持32位程序,net9支持64和32位,包括xp
使用.NET9开发AOT发布的类库,供其他开发工具调用 - decode-dev - 博客园
交叉编译:跨平台交叉编译 Native AOT - 张善友 - 博客园
qt主项目包括子项目:
TEMPLATE = subdirs
SUBDIRS += \
qqqq \
untitled \
www
dotnet publish -r win-x64 -c Release -p:PublishAot=true
dotnet publish -r linux-x64 -c Release -p:PublishAot=true (编译出来是so文件,后缀改成dll即可。正确的做法是qt的load时不写文件后缀,多平台自适应)
如果报错,则需安装依赖 sudo apt-get install clang zlib1g-dev
安装net8
sudo apt-get update && \
sudo apt-get install -y dotnet-sdk-8.0
QLibrary lib("NativeBridge"); // 无扩展名,自动适配平台
lib.unload(); //卸载
-
字符串处理(.NET 侧):
[UnmanagedCallersOnly(EntryPoint = "get_message")] public static IntPtr GetString() { string str = "Hello from .NET"; return Marshal.StringToHGlobalAnsi(str); // 需在调用方释放 }
-
Qt 中释放字符串
typedef const char* (*GetMessageFunction)(); const char* msg = getMessage(); qDebug() << msg; Marshal.FreeHGlobal((IntPtr)msg); // [!] 重要:释放内存
winform 发布AOT设置_winform aot-CSDN博客
[QT]QByteArray与char、int、float(及其数组)之间的互相转化_qbytearray转char数组-CSDN博客
【C语言】17. 内存函数_memcpy的使用方法-CSDN博客
获取char*字符串指针指向的数组长度时,记得用strlen,而不是sizeof_char* 长度-CSDN博客 计算char*的长度,遇到0结束,如果没有0会出问题,返回长度不包括0
Qt 容器类使用指南_qt中容器的使用-CSDN博客 qt容器类
Qt线程锁_qt 线程池中如何定义静态锁-CSDN博客 qt互斥锁
Qt 线程同步 QMutex、QReadWriteLock、QWaitCondition - 一杯清酒邀明月 - 博客园