我有很多来自 bin2c 的二进制文件,当我想从两个c
文件访问同一个数组时,我收到此错误(我正在使用gcc和make)
/tmp/ccLmMGZb.o:(.data+0x154f4): multiple definition of `first_array'
/tmp/ccDt1r4t.o:(.data+0xd5b8): first defined here
/tmp/ccXFhI7r.o:(.data+0x0): multiple definition of `first_array'
/tmp/ccDt1r4t.o:(.data+0xd5b8): first defined here
collect2: error: ld returned 1 exit status
make: *** [Makefile:120: all] Error 1
这是first.h
unsigned char first_array[] =
{160, 16, 0, 0, 0, 8,....blahblahbla };
file1.c中
#include"pathto/first.h"
function(&irelevant1,&irelevant2,&first_array,sizeof(first_array)); //this is decompresion wrapper btw
和file2.c是一样的。
我尝试输出bin2c .c(而不是.h)文件并制作一个这样的标题
#include"pathto/first.c"
extern unsigned char first_array[];
并将其包含在没有first.h的文件file1.c和file2.c中 但它只是变得更糟,所有阵列现在都有多个定义
然后我做了这个:
#ifndef FIRST
#define FIRST
#include"pathto/first.c"
extern unsigned char first_array[];
#endif
但结果与首次尝试相同。
我还尝试了许多随机的东西,我不记得了,但它也没有帮助,或者使用sizeof(first_array)产生更多问题。 任何帮助都会受到赞赏,谢谢。
TL; DR我尝试在更多文件中包含相同的标题,但它不起作用。