【问题标题】:Linker error encountered upon attempting to use RtlInitUnicodeString()尝试使用 RtlInitUnicodeString() 时遇到链接器错误
【发布时间】:2020-05-14 16:47:48
【问题描述】:

用于初始化UNICODE_STRING结构的函数RtlInitUnicodeString()不能用作链接器错误,指出编译期间抛出unresolved external symbol RtlInitUnicodeString referenced in function ***func_name*** (LNK2019)

我尝试使用语句 #pragma comment(lib, "NtosKrnl.lib") 来解决手头的问题(因为我假设链接提到的库 here 会解决它)但是会抛出一个链接器错误,指出消息 cannot open file 'ntoskrnl.lib' (LNK1104)

提前致谢。

【问题讨论】:

  • 如果您正在编写一个普通的 Windows 程序,您将无法访问内核例程。 ntoskrnl.lib 不用于用户模式编程。
  • 用户模式应用可以改用RtlInitUnicodeString()ntdll.dll的相关功能。
  • 你需要使用 ntdll.libntdllp.lib
  • 您好,您的问题解决了吗?请分享解决方案作为答案并accept自己。

标签: c++ c winapi ntdll


【解决方案1】:

函数不能直接调用,因为它们属于内部 API,并且它们的原型头通过 winternl.h 头文件公开(至少在这种情况下)。为了使用作为内部 API 一部分的函数,可以使用运行时动态链接来链接 Ntdll.dll 库,如所述 here 或链接库文件 ntdll.lib,这是作为WDK 的一部分。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-01-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-11
    • 1970-01-01
    • 1970-01-01
    • 2013-06-21
    相关资源
    最近更新 更多