【问题标题】:Attach binary file with resource on gcc在 gcc 上附加带有资源的二进制文件
【发布时间】:2018-07-19 15:16:32
【问题描述】:

嗯,我有一个 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 中尝试过同样的事情,效果很好。

【问题讨论】:

  • 你是如何为 MinGW 编译 resource.rc 的?
  • 我使用代码块作为 IDE,作为资源编译器使用 windres.exe 这是构建日志:pastebin.com/iJEmHZVE

标签: c++ gcc resources ld


【解决方案1】:

根据构建日志,资源似乎是在 64 位模式 (ld.exe: i386:x86-64 architecture of input file '..\Files\User\resources.res') 下构建的,但您正在以 32 位编译可执行文件(“-m32”选项)。然后由于不匹配,它无法将两者链接在一起。

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

【讨论】:

    猜你喜欢
    • 2020-10-07
    • 1970-01-01
    • 2014-10-11
    • 1970-01-01
    • 1970-01-01
    • 2017-05-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多