如何在GCC编译器上的C程序中使用.lib文件方法

时间:2018-09-15 09:47:04

标签: c

我有以下代码:

.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的未定义引用

有人可以帮我解决吗?

2 个答案:

答案 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 必须在目标文件之后。