gpt4 book ai didi

c - 链接静态库时获取 undefined reference

转载 作者:行者123 更新时间:2023-12-04 00:48:39 27 4
gpt4 key购买 nike

我用 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/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com