在gcc

时间:2018-07-19 15:16:32

标签: c++ gcc resources ld

嗯,我有一个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中尝试了同样的方法,并且效果很好。

1 个答案:

答案 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?)。