创建动态库时函数变为未定义
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
在上面,并且没有意外的标志。
一个相对较大的项目正在使用许多对象(主要来自 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
在上面,并且没有意外的标志。