【发布时间】:2020-12-28 11:11:32
【问题描述】:
我有一个 C 文件,它使用多个 lib 文件。 我正在尝试按以下方式编译文件:
gcc -o myprogram main.c list.lib filelib.lib
但是,在尝试编译时,我得到一堆 undefined reference 我正在使用的所有 lib 函数的错误。
我在互联网上找到了一个解决方案并尝试了以下方法:
gcc -o myprogram main.c -l list -l filelib
现在我收到以下错误:
cannot find -llist
cannot fint -lfilelib
我做错了什么?
编辑: 这两个库最初都是使用 Visual Studio 2019,发布模式 x64 创建的。 我正在使用 Windows 10、64 位架构。 在我运行 gcc 的文件夹中,我有以下文件:
main.c
list.lib (copied from VS)
list.h (copied form VS)
filelib.lib (copied from VS)
filelib.h (copied from VS)
在我的 VS 中的 lib 代码中,我确保函数具有 c 链接:
#ifdef __cplusplus
#define C_LINKAGE extern "C"
#else
#define C_LINKAGE
#endif
(两个库中每个声明的函数都以 C_LINKAGE 宏开头)
【问题讨论】:
-
您遇到了哪些函数错误?它们在哪里(在哪些库中)定义?什么是库依赖项?哪个库取决于哪个其他库(因为与库链接时顺序很重要)。
-
顺序确实很重要,如果库相互依赖,您应该添加
start-group/end-group选项。见stackoverflow.com/questions/5651869/… -
filelib 依赖于 list,main.c 依赖于两者
-
对于我尝试使用的每个 lib 函数,我几乎都会遇到错误
-
请添加一个目录列表作为文本显示哪些文件存在。你的操作系统是什么?您是否自己创建了这些库?如果是,请显示您用于构建库的命令。请edit您的问题添加所要求的信息,不要使用cmets来回答。