【问题标题】:commandline tool for embedding binary file into obj file [duplicate]用于将二进制文件嵌入到 obj 文件中的命令行工具
【发布时间】:2012-10-11 10:40:10
【问题描述】:

可能重复:
How to Embed/Link binary data into a C++ DLL

我需要一个可以嵌入我的二进制文件的命令行工具 进入一些(C 方式可链接的).obj 文件 - 这个二进制数据应该 在某些给定的符号下从 c 代码到达它

有这样的工具吗? (我对windows特别感兴趣 平台、coff 和 omf 格式)

【问题讨论】:

  • 通常最简单的方法是将二进制文件转换为 C 源代码,然后通过编译器将其提供给链接器。不确定这是否可以接受。
  • 我对 SO 的了解越多,这个问题开始看起来像是 thisthat 的一个副本。您可能想要完善您的问题和/或更具体地提出问题。
  • 我问的是静态模块(obj)的工具,这不是重复的,gosh

标签: c++ c linker


【解决方案1】:

如果您使用的是 gcc。您可以使用链接器来执行此操作,例如:

ld -r -b binary -o foo.o foo.txt

看看here

【讨论】:

    【解决方案2】:

    如果仅 Windows 的解决方案就足够了,即不需要可移植性,您还可以使用二进制资源和“标准”资源编译器、工具和格式。

    资源不必只是图标、光标、对话框等,还可以是任意数据。这是example。或者这个stackoverflow answer

    我不知道您究竟想在这里实现什么,但如果您在 stackoverflow 或 google 搜索“将二进制文件作为资源嵌入”,您会找到几个示例。

    【讨论】:

    • windows 资源不方便,我需要命令行工具将二进制文件放在链接器 obj 中的某个符号名称下 - 想找到一个工具
    • 编写一个可重用的脚本并不会太复杂,它首先为您的二进制文件创建一个包装器资源脚本,第二个调用 rc.exe 来创建 .res 文件,第三个调用 link.exe 来创建包含您的二进制文件的最终 .dll/.exe。资源的好处是,它们很容易提取。无论是通过应用程序,它们都包含在自身中,或者通过一些独立的工具。当然是 YMMV。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-08
    • 2017-06-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多