【问题标题】:Why am I getting Error LNK2019 unresolved external symbol when calling a function which is statically linked?为什么在调用静态链接的函数时出现错误 LNK2019 unresolved external symbol?
【发布时间】:2021-07-19 09:36:39
【问题描述】:

我从这里下载的项目中构建了一个静态链接库InfinityHook project 当我引用任何可用于导出的函数时,我在 Visual Studio 2017 中遇到以下两 (2) 个错误。

错误 LNK2019 未解析外部符号 IfhInitialize 引用 在功能上 DriverEntry HelloWorld_Driver C:\Users\MYSELF\Documents\Visual Studio 2017\Projects\HelloWorld_Driver\HelloWorld_Driver\Driver.obj

错误 LNK1120 1 未解决的外部 HelloWorld_Driver C:\Users\MYSELF\Documents\Visual Studio 2017\Projects\HelloWorld_Driver\x64\Debug\HelloWorld_Driver.sys

当我从同一个 infinityhook.h 头文件中引用另一个函数并且静态构建在 libinfinityhook.lib 文件中时,我得到了相同类型的错误。因此,基本上没有“导出”的函数可供调用,并且在从主项目引用时会给出链接错误。在得出这个结论之前,我尝试了在 StackOverflow 上找到的几种可能的解决方案,但都没有奏效。我在 Visual Studio 2017 Configuration Properties->Linker->Input->Additional Dependencies 中添加了静态链接文件 libinfiinityhook.lib 并且该文件位于正确的目录中在磁盘上,以便链接器可以找到它。但是我也在VS2017的Configuration Properties->Linker->General->Additional Library Directories的以下设置中添加了这个库文件的目录路径。

【问题讨论】:

    标签: c windows visual-studio driver kmdf


    【解决方案1】:

    如果其他人遇到同样的问题,问题是我调用了两个 C++ 定义的函数,它们声明为来自基于“C”的模块的 C++ 函数。使用关键字 extern 重新编译静态库,一切正常。

    【讨论】:

      猜你喜欢
      • 2013-11-22
      • 2020-05-07
      • 2017-03-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-09-24
      • 1970-01-01
      相关资源
      最近更新 更多