我有一个应用程序和一个静态库。该库似乎构建得很好 - 它肯定编译我的 foo
和 bar
和 geewhizz
函数很好,并且创建静态库没有任何错误或警告。
但是,当应用程序构建并链接到静态库时,它设法链接到函数 foo
和 bar
但找不到函数 geewhizz
。我如何判断 geewhizz
是否进入了图书馆?我看不到库的任何 /map
选项,就像用于构建应用程序的那样。并且在构建应用程序时使用\map
选项是没有意义的,因为它找不到我的geewhizz
函数,并且没有根据报告它。
我正在混合使用 C 和 C++,我怀疑可能是函数名称重整/翻译问题或调用约定问题导致了问题,所以我认为包含函数列表图书馆应该能够阐明这一点。但是,如果有解决此类问题的更一般性建议,我将很高兴听到。
最佳答案
特别感谢@indiv 和@WhozCraig 的有用评论,您至少有以下两个选择:
- 在 Visual Studio 的链接器程序 (
lib.exe
) 中使用/LIST
选项 - 使用带有
/linkermember
选项的dumpbin
工具
Visual Studio 在使 /LIST
选项易于使用方面并不是很有帮助。您必须将其指定为命令行上的附加选项,但具体操作方法尚不清楚。 /LIST
本身会生成一个标准输出列表,但无论是指定文件还是使用 >
重定向运算符都不会以任何明显的方式工作。事实上,我已经完全放弃了研究如何让这个选项发挥作用。
值得庆幸的是,dumpbin
是 Visual Studio(甚至是 Express 版本)附带的实用程序,并且有详细的文档记录 here .因此,在有人让普通人可以远程使用 /LIST
之前,请使用 dumpbin
。
关于c++ - 如何在 Visual Studio 中查找静态 c/c++ 库中的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25048149/