提问人:Bogdan Doicin 提问时间:10/18/2023 更新时间:10/18/2023 访问量:58
是什么导致了错误:C 库中的“未定义引用(函数)”?[复制]
What causes the error: "undefined reference to (function)" in a C library? [duplicate]
问:
我正在使用 Code::Blocks 构建一个库,我正在测试是否可以从我的 C 程序中调用它。但是,当我编译 C 程序时,我收到以下错误消息:
AIA\Surse\tregpol.c|224|undefined reference to `test'|
||error: ld returned 1 exit status|
以下是文件的内容:
主要的 C 程序 tregpol.c:
#include "optim.h"
int main() {
test();
return 0;
}
头文件 optim.h:
#ifndef OPTIM_H_INCLUDED
#define OPTIM_H_INCLUDED
void test();
#endif // OPTIM_H_INCLUDED
函数源 optim.c:
#include "optim.h"
void test()
{
printf("It works!");
}
我做错了什么?和 文件与上述文件位于同一文件夹中。.dll
.a
.def
答:
0赞
Mattia Piras
10/18/2023
#1
您可能想尝试像这样分别编译“optim.c”和“main.c”文件:
gcc -c optim.c && gcc -c main.c
这将产生 2 个对象文件
然后将它们链接在一起:
gcc -Wall -O optim.o main.o -o main
评论
0赞
the busybee
10/18/2023
OP 想要构建一个库并将其链接起来。您的提案仅链接两个对象文件。
评论
gcc optim.c tregpol.c