aot跨平台

dotnet8不支持32位程序,net9支持64和32位,包括xp

.NET9 AOT部署 - 青春似雨后霓虹 - 博客园

GitHub - MichalStrehovsky/PublishAotCross: NuGet package to help you cross-compile Native AOT to different OSes/architectures

使用.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(); //卸载

 

  1. 字符串处理(.NET 侧):

    csharp
    [UnmanagedCallersOnly(EntryPoint = "get_message")]
    public static IntPtr GetString() {
        string str = "Hello from .NET";
        return Marshal.StringToHGlobalAnsi(str); // 需在调用方释放
    }
  2. Qt 中释放字符串

    typedef const char* (*GetMessageFunction)();
    const char* msg = getMessage();
    qDebug() << msg;
    Marshal.FreeHGlobal((IntPtr)msg); // [!] 重要:释放内存



winform 发布AOT设置_winform aot-CSDN博客

软件设计开发笔记4:QT操作SQLite数据库 - 知乎

[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之容器类 - TechNomad - 博客园

Qt线程锁_qt 线程池中如何定义静态锁-CSDN博客 qt互斥锁

Qt 线程同步 QMutex、QReadWriteLock、QWaitCondition - 一杯清酒邀明月 - 博客园

.net8.0 AOT笔记 - 猿妙不可言 - 博客园

 

posted @ 2025-05-26 10:51  81  阅读(33)  评论(0)    收藏  举报