我有以下代码:
.lib文件:
contain TRNG_GetRandomData( int *Data, int Size ); Method
.H文件(头文件):
extern void TRNG_GetRandomData( int *Data, int Size );
.C代码(源文件):
#include<OpenDrivers.h>
void main()
{
int test[8] ;
TRNG_GetRandomData(test,8);
}
我遇到错误
对
TRNG_GetRandomData
的未定义引用
有人可以帮我解决吗?
答案 0 :(得分:0)
您需要在Makefile中添加lib文件(不带.lib扩展名)的选项-l infront。 我猜头文件存在一些链接问题,您确定头文件已正确包含吗?
顺便说一句,您也可以参考以下问题:What are Header Files and Library Files? 希望这会有所帮助。
答案 1 :(得分:0)
我通过从 *.lib 文件中提取所有目标文件并将这些文件添加到链接器解决了类似的问题。
ar x lib3rd_party.lib
gcc <flags> -o my_target my_obj1.o my_obj2.o ... 3rd_party_obj1.o 3rd_party_obj2.o ...
它奏效了。然后我做了一些“改进”。我将这些目标文件“重新打包”为静态 *.a 库。
ar r libmylib.a 3rd_party_obj1.o 3rd_party_obj2.o ...
并将我的项目与它相关联:
gcc <flags> -static -L<libmylib.a_location> -o my_target my_obj1.o my_obj2.o ... -lmylib
它也有效。注意 -lmylib
必须在目标文件之后。