【发布时间】:2011-03-14 05:31:51
【问题描述】:
我用 GCC 制作了一个静态库。图书馆的建设还可以。
当我使用它时,链接器会在某些函数上抛出未定义的引用错误。但是nm 说函数是在静态库中定义和导出的(标有 T)。我知道我需要将库放在需要它们的模块之后的链接顺序,所以这不是问题。
静态库是由 3 个 C 文件构建的。 A.c B.c 和 D.c D 模块依赖于 A 和 B(包括它们的标头)。
当我使用 A 和 B 中的函数时没有问题,但是当我尝试使用 D 中的任何函数时,我得到未定义的引用错误。
如果我在 A 或 B 中移动这些函数,它会起作用。但如果它们在 D 模块中,则不会。
我完全不知道发生了什么或我忽略了什么。
我正在使用 Code::Blocks 并使用纯 C 文件。
【问题讨论】:
-
请提供更多信息,说明哪些函数在哪个 C 文件中,哪些函数获得未定义的引用(以及您是从该库中的另一个对象文件还是另一个对象调用它们)。
标签: c gcc static-libraries linker-errors undefined-reference