You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Linux下使用MinGW交叉编译C++ DLL时添加版本等元信息

Linux环境MinGW交叉编译DLL添加元信息方案

Windows DLL的元信息通过资源脚本(.rc)嵌入,Linux下MinGW交叉编译链自带的windres工具可直接完成资源编译、链接全流程,无需依赖Windows或Visual Studio工具,具体操作如下:

1 编写资源脚本

创建后缀为.rc的资源文件(示例命名为version.rc),按照需求修改对应字段即可:

VS_VERSION_INFO VERSIONINFO
FILEVERSION 1,0,0,0
PRODUCTVERSION 1,0,0,0
FILEFLAGSMASK 0x3fL
#ifdef _DEBUG
FILEFLAGS 0x1L
#else
FILEFLAGS 0x0L
#endif
FILEOS 0x40004L
FILETYPE 0x2L
FILESUBTYPE 0x0L
BEGIN
    BLOCK "StringFileInfo"
    BEGIN
        // 0804对应简体中文,英文可改为0409;04b0对应1200 Unicode编码
        BLOCK "080404b0"
        BEGIN
            VALUE "CompanyName", "开发者/组织名称"
            VALUE "FileDescription", "DLL功能描述"
            VALUE "FileVersion", "1.0.0.0"
            VALUE "InternalName", "DLL内部名称"
            VALUE "LegalCopyright", "版权声明,例:Copyright © 2024 XXX"
            VALUE "OriginalFilename", "最终生成的DLL文件名,例:demo.dll"
            VALUE "ProductName", "所属产品名称"
            VALUE "ProductVersion", "1.0.0.0"
        END
    END
    BLOCK "VarFileInfo"
    BEGIN
        // 和上方编码对应,简体中文为0x804, 1200,英文为0x409, 1200
        VALUE "Translation", 0x804, 1200
    END
END

2 编译资源文件为目标对象

使用和目标DLL架构匹配的windres工具编译rc文件:

  • 64位DLL:x86_64-w64-mingw32-windres version.rc -O coff -o version.res
  • 32位DLL:i686-w64-mingw32-windres version.rc -O coff -o version.res

3 链接资源到DLL

将生成的version.res当做普通源码/目标文件加入编译链接命令即可:

直接用g++编译示例

x86_64-w64-mingw32-g++ -shared -o demo.dll demo.cpp version.res -lstdc++

CMake项目配置示例

直接将rc文件加入add_library的源文件列表即可,CMake会自动调用对应windres完成编译链接:

add_library(demo SHARED demo.cpp version.rc)

验证效果

  • 放到Windows环境下,右键点击DLL选择「属性」-「详细信息」即可看到所有配置的元信息
  • Linux环境下可通过objdump -x demo.dll查看资源段确认嵌入成功

内容的提问来源于stack exchange,提问作者m4l490n

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 11:00:02