我正在尝试使用静态库编译c程序,但该程序无法正常工作。
这是错误:
对calculatearea的未定义引用 collect2.exe:错误:ld返回1退出状态。
静态文件是使用gcc / g ++编译器创建的。
这是主要代码:
#include <stdio.h>
#include <stdint.h>
int calculatearea(int a , int b);
int main()
{
int c = calculatearea(2,4);
printf("%d",c);
getchar();
return 0;
}
答案 0 :(得分:0)
从上面的代码中我们可以看到您已经声明了函数int calculatearea(int a , int b);
,但尚未为其编写任何定义。并且您正在主要调用此函数。编译器找不到函数calculatearea
的定义并给出错误。
要解决此问题:
1)在同一文件中编写函数calculatearea
的定义。
2)在此函数声明中使用extern
说明符,并确保在编译时链接库中包含该定义。
3)如图所示,如果area.o具有函数calculatearea
的定义,则按如下所示进行编译,这将在linux中生成a.out:
gcc filename.c area.o