簡體   English   中英

如何用MinGWwindres編譯資源文件?

[英]How to compile resource file with MinGW windres?

我的最終目標是設置正在使用 MinGW gcc-g++ 編譯的可執行文件的版本(顯示在 properties->details 中)。 但是現在我想用windres編譯一個資源文件,以便以后能夠手動鏈接它。 但是當我使用此命令時出現以下錯誤: windres resource.rc -o resource.res

windres: resource.rc:2: syntax error
The process tried to write to a nonexistent pipe.
...
The process tried to write to a nonexistent pipe.
resource.rc:4:0: fatal error: when writing output to : Invalid argument
VS_VERSION_INFO VERSIONINFO

compilation terminated.
windres: preprocessing failed.

我的 resource.rc 看起來像這樣:

#include "winver.h"

#include "../include/resource.h"
VS_VERSION_INFO VERSIONINFO
 FILEVERSION    0,0,0,2
 PRODUCTVERSION 0,0,0,2
 FILEFLAGSMASK 0x3fL
 #ifdef _DEBUG
 FILEFLAGS 0x1L
 #else
 FILEFLAGS 0x0L
 #endif
 FILEOS 0x4L
 FILETYPE 0x1L
 FILESUBTYPE 0x0L
{
    BLOCK "StringFileInfo"
    {
        BLOCK "040904b0"
        {
            VALUE "Comments",         "comment\0"
            VALUE "CompanyName",      "comment\0"
            VALUE "FileDescription",  "base file\0"
            VALUE "FileVersion",      "0.0.0.2 TP\0"
            VALUE "InternalName",     "testTP\0"
            VALUE "LegalCopyright",   "none\0"
            VALUE "OriginalFilename", "test.exe\0"
            VALUE "ProductName",      "test\0"
            VALUE "ProductVersion",   "0.0.0.2 TP\0"
        }
    }
    BLOCK "VarFileInfo"
    {
        VALUE "Translation", 0x409, 1200
    }
}

而我的 resource.h 只是空的,也許這就是問題所在? 讓我驚訝的是,在 exe 的屬性選項卡中簡單地設置版本號是多么復雜。 我一直在閱讀很多其他的 SO 答案,但沒有一個對我有用。 對於如這一個似乎對如何具有這種RESOURCE.RC文件后,究竟進行得模棱兩可。

作為資源編譯器, windres不知道在您的文件中找到的常量,因此您需要提供這些常量,這通常通過包含來完成。
最簡單的方法是將文件的標題調整為以下內容:

#include <windows.h>

VS_VERSION_INFO VERSIONINFO
 FILEVERSION    0,0,0,2
 PRODUCTVERSION 0,0,0,2
 FILEFLAGSMASK 0x3fL
 #ifdef _DEBUG
 FILEFLAGS 0x1L
 #else
 FILEFLAGS 0x0L
 #endif

 /* rest follows */

由於您想用 gcc 編譯/鏈接,您希望windres 輸出一個目標文件,否則您以后將無法鏈接它。 要解決該問題,請將 compile 命令更改為windres resource.rc -o resource.o

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM