嗯,我有一个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中尝试了同样的方法,并且效果很好。
答案 0 :(得分:0)
根据构建日志,似乎资源是在64位模式(ld.exe: i386:x86-64 architecture of input file '..\Files\User\resources.res'
)中构建的,但是您正在以32位(“ -m32
”选项)编译可执行文件。然后由于不匹配而无法将两者链接在一起。
假设dll是64位的,请尝试将编译器切换到64位(使用“ -m64”标志,不确定如何在CodeBlocks中准确切换它)。否则,您将不得不将风向切换为32位(可能通过“ --target = pe-i386”,请参见此处:TDM-GCC w64 script to change windres for 32bit?)。