【问题标题】:Unresolved External including the aux_klib kernel library未解析的外部,包括 aux_klib 内核库
【发布时间】: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.libAuxKlibInitialize 存在于 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 - 属性 -> 链接器 -> 常规 -> 显示进度

标签: c++ c linker driver kmdf


【解决方案1】:
Properties->Linker->Input->Additional Dependencies 添加“AUX_KLIB.LIB”

这对我有用

【讨论】:

    【解决方案2】:

    我在链接Aux_klib.lib 时遇到了同样的问题,所以我设置了/VERBOSE:Lib

    项目右键->属性->链接器->常规->显示 进展

    据我了解,For Libraries Searched /VERBOSE:Lib 显示库搜索,我注意到 Aux_klib.lib 不在该搜索中。 我注意到输出中的另一件事,/NODEFAULTLIB 也在命令行中传递。

    正如@RbMm 所说,

    他是否搜索 aux_klib.lib 可能是您使用了 /nodefaultlib 选项。 在这种情况下,#pragma comment(lib, "aux_klib.lib") 将没有 效果。

    所以我换了Ignore All Default Libraries

    项目右键->属性->链接器->输入->忽略 所有默认库

    No,一切都完美链接和编译。

    TL;DR

    简而言之,尝试将Linker下的Ignore All Default Libraries改为No并使用#pragma comment(lib, "aux_klib.lib")

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-01-06
      • 2021-06-14
      • 2012-01-28
      • 2018-08-02
      • 1970-01-01
      相关资源
      最近更新 更多