我使用以下命令将几个资源文件转换为 .obj 文件objcopy
我将它们与我的程序源代码链接起来。
我可以使用以下代码很好地访问程序中目标文件内的符号,但只能使用 GCC/G++ (Cygwin):
extern uint8_t data[] asm("_binary_Resources_0_png_start");
extern uint8_t size[] asm("_binary_Resources_0_png_size");
extern uint8_t end[] asm("_binary_Resources_0_png_end");
该代码在 Visual Studio 中不起作用,可能是因为 VS 有它自己的__asm
命令。
我想将我的程序资源(图像、着色器等)包含在我的最终可执行文件中.data
部分通过链接它们。
但是如何在 VC++ 中访问目标文件中定义的符号呢?
我试过extern uint8_t _binary_Resources_0_png_start[]
or extern "C" uint8_t _binary_Resources_0_png_start[]
没有汇编命令,但我收到未解决的符号链接错误。
技巧与objcopy
正如您所看到的,它并不是一种功能齐全的嵌入资源的方式,并且根本不可移植。
Microsoft 有自己的资源机制,因此如果您专门针对 Windows,则可以使用 Windows 资源文件和RCDATA资源 https://msdn.microsoft.com/en-us/library/windows/desktop/aa381039(v=vs.85).aspx.
如果你想要完全可移植的东西,你唯一的选择是将文件格式化为 C 源代码,例如
const uint8_t my_binary[] = { 0x00, 0x01, ... }
为此编写您自己的转换工具很简单。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)