我用 GCC 做了一个静态库。图书馆的 build 还可以。
当我使用它时,链接器会在某些函数上抛出 undefined reference 错误。但是 nm
说函数是在静态库中定义和导出的(用 T 标记)。我知道我需要将库放在需要它们的模块之后的链接顺序,所以这不会成为问题。
静态库是从 3 个 C 文件构建的。 A.c B.c 和 D.c D 模块依赖于 A 和 B(包括它们的 header )。
当我使用 A 和 B 中的函数时没有问题,但是当我尝试使用 D 中的任何函数时,我在它们上出现 undefined reference 错误。
如果我将这些函数移到 A 或 B 中,它就会起作用。但如果它们在 D 模块中则不会。
我完全不知道发生了什么或我被忽略了什么。
我正在使用 Code::Blocks 并处理纯 C 文件。
最佳答案
一个多次奏效的老把戏:在链接阶段列出每个静态库两次。
即,在您的 makefile(或您正在使用的任何文件)中,放置:
gcc -o <outfile> <liba> <libb> <libc> <liba> <libb> <libc>
无论如何,我希望你明白了。
关于c - 链接静态库时获取 undefined reference ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3218883/