在 gcc 上附加带有资源的二进制文件

Attach binary file with resource on gcc

好吧,我有一个 C++ 项目,我在其中使用 GCC + MinGW 进行编译,效果非常好。 但是我需要将一个二进制文件附加到我的输出文件,并且我正在尝试针对每个资源执行此操作,但是当我尝试编译时,它会出现以下错误:

C:/Program Files (x86)/CodeBlocks/…/ld.exe: i386:x86-64 architecture of input file ‘…\resources.res’ is incompatible with i386 output

这里是文件代码resource.rc

#include "resource.h"

IDR_FILE BIN DISCARDABLE "../bin/File.dll"

这是 resource.h 文件的代码

#define IDR_FILE 541

我在 VC++ 2015 年尝试了同样的方法,效果非常好。

根据构建日志,该资源似乎是在 64 位模式下构建的 (ld.exe: i386:x86-64 architecture of input file '..\Files\User\resources.res'),但您正在以 32 位模式编译可执行文件(“-m32”选项).然后它不能 link 因为不匹配。

假设dll是64位的,尝试将编译器切换到64位(使用“-m64”标志,不确定如何在CodeBlocks中切换它)。否则,您必须将 windres 切换为 32 位(可能通过“--target=pe-i386”,参见此处:TDM-GCC w64 script to change windres for 32bit?)。