创建动态库时函数变为未定义

Function becomes undefined when creating dynamic library

一个相对较大的项目正在使用许多对象(主要来自 C 文件)来创建多个可执行文件和动态库。例如,其中一个文件 (gxdb.c) 创建了一个名为 gxdbkq 的函数,它(在目标文件的详细信息中)显示为:

...
00000000000007b0 T gxdbkq
...

但是,当我检查共享库时,该函数已变为未定义:

...
                 U gxdbkq
...

问题可能出在链接阶段,但我什至不知道如何开始解决这个问题。

The problem is probably in the linking phase

是的,最有可能的问题是您没有 link gxdb.o 进入您的图书馆。

另一种可能性是您的 link 行有一个“杂散”标志,这使得 linker 忽略下一个参数,它恰好是 gxdb.o.

您应该仔细检查您的 link 行以确保 gxdb.o 在上面,并且没有意外的标志。