如何在CMake中配置链接ntdll.lib以解决未定义引用报错
CMake链接ntdll.lib配置方案
这个错误是因为链接阶段未指定关联ntdll系统库,按以下步骤配置即可:
- 打开项目根目录的
CMakeLists.txt文件,找到你需要链接ntdll.lib的生成目标(可执行文件/动态库)的定义位置,添加如下配置:
# 将下方的<你的目标名称>替换为实际的目标名,比如add_executable定义的可执行文件名 target_link_libraries(<你的目标名称> PRIVATE ntdll.lib)
- 若你使用MinGW工具链编译,配置改为如下形式即可:
target_link_libraries(<你的目标名称> PRIVATE ntdll)
- 额外注意:如果是C项目,你在代码中声明
NtSetTimerResolution函数时,需要用extern "C"包裹,避免C符号修饰导致匹配失败,示例声明如下:
#include <windows.h> #ifdef __cplusplus extern "C" { #endif NTSYSAPI NTSTATUS NTAPI NtSetTimerResolution( ULONG DesiredResolution, BOOLEAN SetResolution, PULONG CurrentResolution ); #ifdef __cplusplus } #endif
配置完成后删除旧的CMake构建缓存,重新生成并编译即可解决链接错误。
内容的提问来源于stack exchange,提问作者a_girl
相关产品推荐
相关产品推荐

