0

有人可以帮我编写或举例说明版本化的 DLL 吗?我想创建一个在编译期间的函数 - 设置 DLL 的所有细节,但我不知道该怎么做,甚至不知道如何开始或从哪里开始。

4

1 回答 1

0

涉及的三个步骤是:

  1. 创建版本资源脚本
  2. 使用资源编译器编译版本资源脚本。
  3. 将编译好的资源文件(后缀.res)链接到 DLL 中。

例子:

  • 主文件

    #include <windows.h>
    BOOL APIENTRY DllMain(HMODULE, DWORD, LPVOID) { return TRUE; }
    
  • 版本.rc

    #define APSTUDIO_READONLY_SYMBOLS
    #include "windows.h"
    #undef APSTUDIO_READONLY_SYMBOLS
    
    LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_UK
    #pragma code_page(1252)
    
    VS_VERSION_INFO VERSIONINFO
     FILEVERSION 1,9,1,7
     PRODUCTVERSION 2,2,2,2
     FILEFLAGSMASK 0x3fL
     FILEFLAGS 0x0L
     FILEOS 0x40004L
     FILETYPE 0x1L
     FILESUBTYPE 0x0L
    BEGIN
        BLOCK "StringFileInfo"
        BEGIN
            BLOCK "080904b0"
            BEGIN
                VALUE "CompanyName", "My Company.\0"
                VALUE "FileDescription", "My File\0"
                VALUE "FileVersion", "1.9.1.7\0"
                VALUE "InternalName", "my-real-file\0"
                VALUE "LegalCopyright", "Copyright © 2012 My Company Ltd.\0"
                VALUE "OriginalFilename", "my.dll\0"
                VALUE "PrivateBuild", "820\0"
                VALUE "ProductName", "My Company: my dll\0"
                VALUE "ProductVersion", "2.2.2.2\0"
            END
        END
        BLOCK "VarFileInfo"
        BEGIN
            VALUE "Translation", 0x809, 1200
        END
    END
    

从命令行:

> rc 版本.rc

> cl /nologo /LD main.cpp 版本.RES
主文件

这将创建一个main.dll带有版本选项卡的选项卡。

警告:自从我看到这个并且已经忘记了 version.rc 脚本中的所有内容是什么意思以来已经有一段时间了。

于 2012-11-22T12:13:10.713 回答