【发布时间】:2014-09-22 18:19:28
【问题描述】:
我有一个应用程序和一个静态库。该库似乎构建得很好 - 它当然可以很好地编译我的 foo 和 bar 和 geewhizz 函数,并创建静态库而没有任何错误或警告。
但是,当应用程序构建并链接到静态库时,它设法链接到函数foo 和bar,但找不到函数geewhizz。如何判断geewhizz 是否进入图书馆?我看不到任何/map 库选项,例如用于构建应用程序的库。而且在构建应用的时候使用\map选项是没有意义的,因为它找不到我的geewhizz函数,也没有依据报告。
我正在使用 C 和 C++ 的混合体,我怀疑可能存在导致问题的函数名称修改/翻译问题或调用约定问题,所以我认为有一个函数列表包含在图书馆应该能够阐明这一点。但如果有解决此类问题的更一般性建议,我很乐意听到。
【问题讨论】:
-
所以你得到一个链接错误,对吧?
-
@MarcoA.:仅当将可执行文件链接到共享库时。他想知道他的共享库是否有效在他尝试使用它之前。
-
@MarcoA:不再是 - 我已经通过在
extern "C" {...}构造中声明geewhizz来修复我的链接错误。但我仍然很想知道如何在静态库中获取函数列表,因为这有助于更快地证实我的怀疑。静态库始终有效 -
你可以试试dumpbin.exe:stackoverflow.com/questions/375273/…。我不知道它是否适用于静态库,但我不明白为什么它不会。
-
@WhozCraig - 鉴于上述情况,也许您应该将另一个答案标记为这个答案的副本;-) 我认为有人应该拼出
dumpbin /linkermember语法并获得一些免费代表感恩的人对问题和答案都投赞成票
标签: c++ c visual-studio static-libraries