我目前正在创建一个C库来接受输入(类似于scanf),但在将所有必需的文件移动到相关位置后,当我键入此命令(gcc main.c -o main.exe -linput
)时出现此错误
undefined reference to `getInput
collect2.exe: error: ld returned 1 exit status
我已经把C文件和头文件移到了GCC include文件夹中,把libinput.a
移到了lib文件夹中。我也对我制作的另一个库做了同样的事情,但是效果很好。
经过进一步的挖掘,我发现当我右键单击函数“getinput”并单击“go to definition”时,它会转到input.c
文件而不是input.h
。在其他库中,它会将我重定向到library.h
文件而不是library.c
文件。这可能是问题所在,但我不知道如何修复它。
注意-运行gcc main.c libinput.a
的同时在同一个目录中有libinput.a
,但我更喜欢gcc main.c -o main.exe -linput
(没有在同一个目录中,类似于其他库的工作方式)。在同一个目录中有input.c
和input.h
,然后链接它也可以工作。环境- VS代码在windows 10上
下面是我目前的代码:input.h
个
#ifndef INPUT_H
#define INPUT_H
void getInput(char *str, ...);
#endif
main.c
(使用该库的示例代码)
#include <stdio.h>
#include <input.h>
int main()
{
char *s = NULL;
getInput("{s}", &s);
printf("%s\n", s);
}
编辑-我通过将文件移动到以下位置修复了它
数据库管理系统
输入. c和输入. h = D:
1条答案
按热度按时间uidvcgyl1#
您告诉链接器使用
-L searchdir
搜索其他目录。gcc会将该选项传递给链接器。