我知道如何执行此操作的唯一方法是使用单个字节/字符数组将文件转换为C源文件,该数组包含十六进制的资源文件的内容。

有更好或更简单的方法可以做到这一点吗?

最佳答案

这是我与gcc-arm交叉编译器一起使用的好技巧;包括通过汇编语言文件的文件。在此示例中,这是我包括的文件public_key.pem的内容。

pubkey.s

 .section ".rodata"
 .globl pubkey
 .type pubkey, STT_OBJECT
pubkey:
 .incbin "public_key.pem"
 .byte 0
 .size pubkey, .-pubkey

对应的 pubkey.h
#ifndef PUBKEY_H
#define PUBKEY_H
/*
 * This is a binary blob, the public key in PEM format,
 * brought in by pubkey.s
 */
extern const char pubkey[];

#endif // PUBKEY_H

现在,C语言的源代码可以包括pubkey.h,用gcc编译pubkey.s并将其链接到您的应用程序中,然后就可以开始了。 sizeof(pubkey)也可以。

关于c - 您如何在C中嵌入资源文件?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10036769/

10-13 07:05