为什么在调用静态链接的函数时会出现 Error LNK2019 unresolved external symbol?
Why am I getting Error LNK2019 unresolved external symbol when calling a function which is statically linked?
我已经从我从这里下载的项目构建了一个静态链接库 InfinityHook project
当我引用任何可用于导出的函数时,我在 Visual Studio 2017 中遇到以下两 (2) 个错误。
Error LNK2019 unresolved external symbol IfhInitialize referenced
in function
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 文件中时,我得到了相同类型的错误。因此,基本上 none 的“导出”函数可以调用,并且在从主项目引用时会出现链接错误。在得出这个结论之前,我尝试了在 Whosebug 上找到的几种可能的解决方案,但其中 none 已经奏效。我在 Visual Studio 2017 Configuration Properties->Linker->Input->Additional Dependencies[=19] 中添加了静态链接文件 libinfiinityhook.lib =] 并且该文件位于磁盘上的正确目录中,因此链接器可以找到它。但是我也把这个库文件的目录路径添加到VS2017中的如下设置Configuration Properties->Linker->General->Additional Library Directories.
如果其他人遇到同样的问题,问题是我正在调用两个 C++ 定义的函数,从基于“C”的模块中声明为 C++ 函数。使用关键字 extern 重新编译静态库,一切正常。
我已经从我从这里下载的项目构建了一个静态链接库 InfinityHook project 当我引用任何可用于导出的函数时,我在 Visual Studio 2017 中遇到以下两 (2) 个错误。
Error LNK2019 unresolved external symbol IfhInitialize referenced in function 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 文件中时,我得到了相同类型的错误。因此,基本上 none 的“导出”函数可以调用,并且在从主项目引用时会出现链接错误。在得出这个结论之前,我尝试了在 Whosebug 上找到的几种可能的解决方案,但其中 none 已经奏效。我在 Visual Studio 2017 Configuration Properties->Linker->Input->Additional Dependencies[=19] 中添加了静态链接文件 libinfiinityhook.lib =] 并且该文件位于磁盘上的正确目录中,因此链接器可以找到它。但是我也把这个库文件的目录路径添加到VS2017中的如下设置Configuration Properties->Linker->General->Additional Library Directories.
如果其他人遇到同样的问题,问题是我正在调用两个 C++ 定义的函数,从基于“C”的模块中声明为 C++ 函数。使用关键字 extern 重新编译静态库,一切正常。