我想知道是否有一种方法可以通过包含文件或头文件或类似文件来加载外部二进制文件作为 C 中的变量。
例如,在我目前正在进行的一个项目中,我正在使用一个具有图形显示器的嵌入式系统,该系统将使用 ASCII 数据和命令来显示文本和次要图形(框、线等)。但是,它也会显示单色位图。因此,我有一系列用于用户界面的静态显示,以及一些用于启动屏幕的位图。
现在我提到它是一个嵌入式系统的原因是没有文件系统可以从中加载数据,只有RAM和程序存储器,因此我希望使用的任何“预制”数据或表都必须在编译时加载通过源文件或使用链接器通过目标文件。不幸的是,IDE 不提供任何方法来将任何形式的二进制文件加载到程序内存中,以便以任何易于识别的方式用作数据缓存。
缺少做我已经必须解决这个问题的事情(使用十六进制编辑器将二进制文件读取为 ASCII 编码的十六进制并将原始数据作为变量复制并粘贴到头文件中),有没有一种方法可以“链接”到一个文件或“包含”一个可以在编译时作为 const 变量加载的文件?
我正在使用的系统是 Microchip 系列处理器的 MPLAB X,编译器是 GNC。在尝试专门通过特定的编译器/链接器软件寻找方法之前,我主要想知道是否有办法通过某些 C 命令或函数来做到这一点。
不,你不能直接这样做。一种方法是将二进制文件转换为 C 源代码并将这些片段包含到您的项目中。转换可以通过编写的简单程序来完成you或通过某些第三方程序。
例如:
二进制文件1.c(自动生成)
unsigned char binaray_file1[] =
{
1,2,3,10,20,
....
} ;
二进制文件2.c(自动生成)
unsigned char binaray_file2[] =
{
0,0,10,20,45,32,212,
....
} ;
一些源文件.c
extern unsigned char binary_file1[] ;
extern unsigned char binary_file2[] ;
// use binary_file1 and binary_file2 here.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)