静态库中未定义的函数

时间:2017-02-03 16:23:32

标签: gcc

我正在尝试使用MinGW构建一个静态库。

一切都很顺利,直到我尝试使用该库并得到一个错误,说add_numbers是一个未定义的函数。

许多其他人都遇到过这个问题并通过在包含源文件后移动他们的库来进行排序,但这就是我编写批处理文件的方式,所以这没什么用处。

以下是我的消息来源。

mylib.h

#ifndef MYLIB_H
#define MYLIB_H
int add_numbers(int a, int b, int c);
#endif

mylib.c     #include“mylib.h”     int add_numbers(int a,int b,int c)     {     返回a + b + c;     }

我正在使用以下命令构建我的.a文件

gcc --std = c89 -c mylib.c -o mylib.o

ar rcs libmylib.a mylib.o

我也试过指定标准。 运行此命令时没有错误或警告。

接下来,我的测试程序看起来像这样。

#include <stdio.h>
#include "mylib.h"
int main()
{
printf("The sum of 1, 2, and 3 is %d", add_numbers(1, 2, 3));
getchar();
return 0;
}

最后,我们使用此命令构建测试。 gcc mylibtest.c -L -lmylib -o test.exe

我尝试将这些命令移动到许多不同的序列中,但总是收到以下错误:

C:\ Users \ Aaron \ AppData \ Local \ Temp \ cc0ERpBi.o:mylibtest.c :(。text + 0x26):undefined  引用`add_numbers' collect2.exe:错误:ld返回1退出状态

E:\ my_first_static_library&GT;

任何帮助都会非常感激,我已经阅读了我在编写静态库的过程中可以找到的每个教程,以及十个堆栈溢出问题。

1 个答案:

答案 0 :(得分:1)

您在-L之后错过了一个点:

gcc mylibtest.c -L . -lmylib -o test.exe