我正在尝试使用静态库编译一个c程序,但它无法正常工作。
这是错误:
未定义引用`calculatearea'colle2.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;
}
从上面的代码中我们可以看到你已经声明了函数int calculatearea(int a , int b);
但没有为它编写任何定义。你正在主要调用这个功能。编译器没有找到函数calculatearea
的定义并给出错误。
要解决这个问题:
1)在同一文件中写入函数calculatearea
的定义。
2)在此函数声明中使用extern
说明符,并确保在编译时链接库中存在该定义。
3)如图所示,如果area.o有函数calculatearea
的定义,那么编译如下,这将在linux中生成a.out:
gcc filename.c area.o