【问题标题】:How to show the function name with unresolved referenced symbol如何使用未解析的引用符号显示函数名称
【发布时间】:2017-10-08 17:10:10
【问题描述】:

This question 显示链接器显示错误,指示带有引用符号的函数:

v8_libbase.lib(platform-win32.obj):错误 LNK2019:未解决 外部符号 __imp_timeGetTime
在函数中引用
“公共:无效 __cdecl v8::base::Win32Time::SetToCurrentTime(void)" (?SetToCurrentTime@Win32Time@base@v8@@QEAAXXZ)

v8_libbase.lib(time.obj):错误 LNK2001:未解析的外部符号 __imp_timeGetTime

但我使用的 Visual Studio 2015 中的错误不包含 referenced in function 部分。有没有办法配置一个工作室来显示referenced in function 部分?

这是我得到的错误列表:

1>------ Build started: Project: v8, Configuration: Release x64 ------
1>  v8.cpp
1>v8_libbase.lib(platform-win32.obj) : error LNK2001: unresolved external symbol __imp_timeGetTime
1>v8_libbase.lib(time.obj) : error LNK2001: unresolved external symbol __imp_timeGetTime
1>v8_libbase.lib(stack_trace_win.obj) : error LNK2001: unresolved external symbol __imp_StackWalk64
1>v8_libbase.lib(stack_trace_win.obj) : error LNK2001: unresolved external symbol __imp_SymSetOptions
1>v8_libbase.lib(stack_trace_win.obj) : error LNK2001: unresolved external symbol __imp_SymFunctionTableAccess64
1>v8_libbase.lib(stack_trace_win.obj) : error LNK2001: unresolved external symbol __imp_SymGetModuleBase64
1>v8_libbase.lib(stack_trace_win.obj) : error LNK2001: unresolved external symbol __imp_SymGetLineFromAddr64
1>v8_libbase.lib(stack_trace_win.obj) : error LNK2001: unresolved external symbol __imp_SymInitialize
1>v8_libbase.lib(stack_trace_win.obj) : error LNK2001: unresolved external symbol __imp_SymGetSearchPathW
1>v8_libbase.lib(stack_trace_win.obj) : error LNK2001: unresolved external symbol __imp_SymSetSearchPathW
1>v8_libbase.lib(stack_trace_win.obj) : error LNK2001: unresolved external symbol __imp_SymFromAddr
1>v8_libbase.lib(stack_trace_win.obj) : error LNK2001: unresolved external symbol __imp_PathRemoveFileSpecW
1>C:\Users\mkore\Documents\Visual Studio 2015\Projects\v8\x64\Release\v8.exe : fatal error LNK1120: 11 unresolved externals
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========

【问题讨论】:

  • 您可以发布您收到的完整错误消息吗?它可能指的是一个虚函数,它不一定是必需的。
  • 您不需要缺少的部分来诊断或解决此问题。只需链接所需的库。
  • @yzt,我不知道需要什么库。这就是问题
  • 谷歌搜索函数名称。我的意思是所有必需的信息都已经在消息中了。
  • @yzt,是的,我明白你的意思,谢谢,__imp_StackWalk64 是函数的名称。只是想知道为什么它没有显示整个部分

标签: c++ visual-studio-2015 linker


【解决方案1】:

您不需要缺少的部分来诊断和修复这些错误。当您在代码中调用函数(或引用变量,但这并不常见)时会发生这些错误,链接器无法在它链接在一起的所有对象和库文件中找到定义。例如,如果您的函数 A 调用了外部函数 B,而 B 缺失,则链接器会发出此错误,提示“未解析的外部符号 B”。

在这些情况下,A(您所说的错误报告中缺少的内容)通常是完全不相关的(除非您想弄清楚为什么首先要调用 B。)

首先,在大多数情况下,这些错误意味着您在构建中缺少库(或源文件)。

如果您完全不知道缺少的库是什么,请开始在谷歌上搜索逐字符号名称,例如__imp_StackWalk64__imp_SymSetOptions

如果你再有一点经验,你会发现这些都是 Win32 函数,它们的通用名称是 timeGetTimeStackWalk64 等。

然后只需在 MSDN 中找到这些名称并滚动到页面底部即可查看与这些缺失函数对应的库。

例如,我相信在这种特殊情况下,您无法与winmm.libdbghelp.libshlwapi.lib 链接(至少。)

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-02-15
  • 2017-09-18
相关资源
最近更新 更多