gpt4 book ai didi

c++ - 如何在程序中包含数据对象文件(图像等)并访问符号?

转载 作者:可可西里 更新时间:2023-11-01 18:19:46 25 4
gpt4 key购买 nike

我使用 objcopy 将几个资源文件转换为 .obj 文件,并将它们与我的程序源代码链接起来。我可以使用以下代码很好地访问程序中目标文件中的符号,但只能使用 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[]extern "C"uint8_t _binary_Resources_0_png_start[],但我遇到了 Unresolved 符号链接(symbolic link)错误。

最佳答案

如您所见,objcopy 的技巧并不意味着嵌入资源的全功能方式,而且根本不可移植。

Microsoft 有自己的资源机制,因此如果您专门针对 Windows,则可以使用 Windows 资源文件和 RCDATA resource .

如果您想要完全可移植的东西,您唯一的选择是将文件格式化为 C 源代码,例如

const uint8_t my_binary[] = { 0x00, 0x01, ... }

为此编写您自己的转换工具很简单。

关于c++ - 如何在程序中包含数据对象文件(图像等)并访问符号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47414607/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com