tdh.h 中定义的函数的未解决的外部符号错误

Unresolved external symbol errors for functions defined in tdh.h

提问人:Shane Bishop 提问时间:3/23/2022 最后编辑:Shane Bishop 更新时间:3/23/2022 访问量:176

问:

当我编译我的 C Windows 程序时,我收到以下链接器错误:

(Link target) ->
  libossec.lib(read_win_trace_log.obj) : error LNK2001: unresolved external symbol TdhFormatProperty [C:\path\to\project.vcxproj]
  libossec.lib(read_win_trace_log.obj) : error LNK2001: unresolved external symbol TdhGetPropertySize [C:\path\to\project.vcxproj]
  libossec.lib(read_win_trace_log.obj) : error LNK2001: unresolved external symbol TdhGetEventInformation [C:\path\to\project.vcxproj]
  libossec.lib(read_win_trace_log.obj) : error LNK2001: unresolved external symbol TdhGetEventMapInformation [C:\path\to\project.vcxproj]
  libossec.lib(read_win_trace_log.obj) : error LNK2001: unresolved external symbol TdhGetProperty [C:\path\to\project.vcxproj]
  C:\Users\Administrator\src\lich\lichsrc\x64\Release\lich.exe : fatal error LNK1120: 5 unresolved externals [C:\path\to\project.vcxproj]

如有必要,我可以包含我的源代码,但它非常大(文件超过 600 行长)。

我包括在我的 .我检查了一下,系统头文件中每个函数都有函数原型。因此,这些链接器错误不应该是由于任何隐式函数原型造成的。tdh.hread_win_trace_log.ctdh.h

我查看了源代码,它已经将所有内容包装在 中,因此该代码应该可以从我的 C 代码中调用。tdh.hextern "C"

我使用 Visual Studio 编译器进行编译,但从命令行使用手动维护的文件进行编译。.vcxproj

我是否可能缺少一个或我需要链接才能成功构建?.lib.dll

C Windows 链接器 错误

评论

0赞 Jabberwocky 3/23/2022
这些符号在哪里定义?在某些 .oib 文件或某些 .c/.cpp 源文件中?你使用的是 Visual Studio 吗?TdhFormatProperty
0赞 Shane Bishop 3/23/2022
这些函数的原型位于系统头文件中,我将其包含在内。我不确定功能体在哪里。我正在使用 Visual Studio。tdh.h

答:

1赞 Jabberwocky 3/23/2022 #1

如此处所述,为了使用标头中的函数,您需要链接到库。tdh.htdh.lib

使用 Project>Properties 命令并添加,如下所示:tdh.lib

enter image description here