GCC 在 lib

问题描述

我有一个 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-linkage:

#ifdef __cplusplus
#define C_LINKAGE extern "C"
#else
#define C_LINKAGE
#endif

(两个库中每个声明的函数都以 C_LINKAGE 宏开头)

解决方法

.lib 文件是 MSVC 特定的,gcc 无法处理它们,gcc 可以处理 .a 库或 dll(在 Windows 上)

如果您想使用 gcc,请使用 gcc 重建库,或者让 MSVC 创建 DLL。

或者坚持使用微软并使用 MSVC 处理所有事情。