我使用ld -r -b binary -o res.o *
将一个包含多个png图像的文件夹嵌入到我的C程序中,其中一个名为font.png
。
在我的代码中,我使用此代码加载带有stb_image的嵌入式font.png
:
char* img;
int w, h, n;
extern char* _binary_font_png_start;
extern char* _binary_font_png_end;
img = (char*)stbi_load_from_memory((unsigned char*)_binary_font_png_start, _binary_font_png_end - _binary_font_png_start, &w, &h, &n, 4);
实际图像尺寸为256x128,但stbi给出的值为w(宽度)为0,h(高度)为2293200。出了什么问题?
答案 0 :(得分:2)
最后设法通过更改我的代码使其工作如下:
char* img;
int w, h, n;
extern char _binary_font_png_start, _binary_font_png_end;
img = (char*)stbi_load_from_memory((unsigned char*)&_binary_font_png_start, &_binary_font_png_end - &_binary_font_png_start, &w, &h, &n, 4);
有点奇怪,但它有效,所以我猜它是正确的?无法找到关于这些符号链接到c代码的“预期”方式的任何文档,但似乎它们代表二进制数据结束/开始时的字符,而不是指向该字符的指针,因为我我期待。