c++ - 如何在 Visual Studio 中查找静态 c/c++ 库中的函数

标签 c++ c visual-studio static-libraries

我有一个应用程序和一个静态库。该库似乎构建得很好 - 它肯定编译我的 foobargeewhizz 函数很好,并且创建静态库没有任何错误或警告。

但是,当应用程序构建并链接到静态库时,它设法链接到函数 foobar 但找不到函数 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/

相关文章:

c++ - 避免双变量中的垃圾零值

c++ - 将 OLECHAR* 转换为 CHAR* 以构建 string()

c# - 无法通过 ASP.NET Web 应用程序将数据插入 MySQL 表

c# - 如何获取代码或堆栈跟踪?

c++ - 查找 vector 中出现次数最多的数字

c++ - 仅在 boost::asio basic_stream_socket::async_read_some 处理程序中使用部分数据

c++ - 动态类型取消引用?

c - 如果该位介于低和高之间,则将 0 位变为 1 位

c# - 将 Xamarin iOS UI 项目链接到 Visual Studio 项目

c++ - 在 C++ 中分离接口(interface)和实现