使用Windows Defender API的WDStatus函数遇LNK1120错误求助
解决WDStatus函数编译LNK1120未解析外部符号问题
你遇到的LNK1120错误确实是因为编译器无法找到WDStatus函数的实现——该函数属于MpClient.dll,需要显式链接对应的导入库MpClient.lib。以下是两种解决方法:
方法1:通过Visual Studio项目设置链接库
- 右键你的项目,选择属性
- 依次展开配置属性 → 链接器 → 输入
- 在附加依赖项中添加
MpClient.lib,点击确定保存设置
方法2:在代码中直接指定链接库
在你的代码开头(包含头文件之后)添加一行编译指令,让编译器自动链接MpClient.lib:
#include <windowsdefender.h> #pragma comment(lib, "MpClient.lib") // 你的原有代码 HRESULT result; BOOL defStatus; result = WDStatus(&defStatus); if (result==S_OK) { if (defStatus) puts("Defender Antivirus is enabled."); else puts("Defender Antivirus is not enabled."); } else { puts("Failed to get the result."); }
额外注意事项
- 确保你的项目平台(x64/x86)与系统一致,
MpClient.dll在64位系统中仅提供64位版本,32位程序无法调用 WDStatus函数仅支持Windows 10及以上版本的系统- 运行程序时不需要额外携带
MpClient.dll,该文件是系统自带的,位于C:\Windows\System32目录下
内容的提问来源于stack exchange,提问作者Sergio Calderon
相关产品推荐
相关产品推荐

