为什么在调用静态链接的函数时会收到 Error LNK2019 unresolved external symbol?

问题描述

我从我从这里下载的项目构建了一个静态链接库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

Error LNK1120 1 unresolved externals 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 并且该文件位于正确的目录中在磁盘上,以便链接器可以找到它。但是我也在VS2017Configuration Properties->Linker->General->Additional Library Directories中的以下设置中添加了这个库文件的目录路径。

解决方法

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

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...