如何知道 .lib 需要哪些.dll

How to know which .dll is required by .lib

本文关键字:dll 何知道 lib      更新时间:2023-10-16

我正在尝试在我的项目中使用 V8。我已经将它构建为静态库,现在在out.gn/x64.release/obj文件夹中,我有很多.lib文件。根据此参数列表g++

--start-group 
out.gn/x64.release/obj/{libv8_{base,libbase,external_snapshot,libplatform,libsampler},
third_party/icu/libicu{uc,i18n},src/inspector/libinspector}.a 
-Wl,--end-group

我已经取消定义并链接了v8.cpp文件中的以下库:

#pragma comment(lib, "v8_base.lib")
#pragma comment(lib, "v8_libbase")
#pragma comment(lib, "v8_external_snapshot")
#pragma comment(lib, "v8_libplatform")
#pragma comment(lib, "v8_libsampler")
#pragma comment(lib, "icuuc.lib")
#pragma comment(lib, "icui18n.lib")
#pragma comment(lib, "inspector")

但是现在我收到许多链接器错误:

1>------ Build started: Project: v8, Configuration: Release x64 ------
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>C:...DocumentsVisual Studio 2015Projectsv8x64Releasev8.exe : fatal error LNK1120: 11 unresolved externals

我在这里读到过

如果要手动将 *.lib 文件添加到链接依赖项, 然后,您还负责链接到它们所依赖的任何DLL 上

所以我的问题是如何识别这些DLL以及如何链接它们?我正在使用Visual Studio 2015。

您应该阅读代码中使用的函数的文档。

例如,对于 StackWalk64 ,您可以在需求部分找到:

  • 可再发行组件 - DbgHelp.dll 5.1 或更高版本
  • 标头 - DbgHelp.h
  • Library - DbgHelp.lib
  • DLL - DbgHelp.dll