【发布时间】:2017-10-04 15:27:48
【问题描述】:
下午好,所以我有一个关于在我的内核模式驱动程序中包含 aux_klib 库的问题,由于某种原因,所有 aux_klib 函数都出现相同的错误。
Error 1 error LNK2019: unresolved external symbol AuxKlibInitialize referenced in function "unsigned char __cdecl Main(struct MainInfo*)" (?MainInfo@@YAEPEAU__MainInfo@@@Z)
我在我的项目中做了#pragma comment(lib, "aux_klib.lib") 但没有运气,驱动程序也是用cpp编码的。我还将 lib 添加到我的项目中,并确保它是 x64,因为这是项目构建架构。我还尝试通过 extern "C" 包含函数,没有头文件和库,但没有运气,我还将所有库路径添加到链接器设置中,等等。欢迎任何想法!
【问题讨论】:
-
要研究这种错误,您需要添加链接器选项/VERBOSE 或最小
/VERBOSE:LIB并在输出中查看 - 链接器使用aux_klib.lib。 AuxKlibInitialize 存在于 x64 版本的 aux_klib.lib -
我将 /VERBOSE:LIB 添加到我的命令行选项中,但它仍然是相同的链接器错误,没有添加输出,我还在 IDA 中打开了 aux_klib.lib x64 并查看了导出,它们似乎都是在那里。
-
这个选项当然不能修复错误,它用于诊断。
no added output- 你的意思是 - 没有任何消息是通过链接打印的?!不相信。您使用 msvc 进行构建?使用/VERBOSE并查找链接器输出 - 他是否在搜索 aux_klib.lib 可能是您使用了 /nodefaultlib 选项。在这种情况下,#pragma comment(lib, "aux_klib.lib")将无效。您需要直接将 aux_klib.lib 添加到链接器输入 -
照你说的做了,去掉了 /nodefaultlib 仍然是同样的错误没有额外的输出 prntscr.com/f4ttcc prntscr.com/f4ttgy prntscr.com/f4ttxt
-
但是你加了
/VERBOSE吗?在 msvc - 属性 -> 链接器 -> 常规 -> 显示进度