使用MinGW编译含wtsapi32.h的C++脚本时遇类型未定义错误求助
解决MinGW编译Wtsapi32相关代码的头文件错误
错误原因
WTS_CONNECTSTATE_CLASS这类Windows API类型需要特定版本宏启用,MinGW默认头文件配置未开启高版本Windows API定义,导致类型未声明。同时混用MinGW和Windows Kits的头文件/库会引发兼容性问题,两者编译环境不兼容。
解决方案
1. 修改代码,添加版本宏定义
在包含任何Windows头文件前,定义对应Windows版本的宏,确保启用所需API的定义。推荐使用Windows 10对应的版本值0x0A00:
#define WINVER 0x0A00 #define _WIN32_WINNT 0x0A00 #include <Windows.h> #include <Wtsapi32.h> int main() { return 0; }
2. 使用正确的编译命令
不要同时混用MinGW和Windows Kits的头文件/库路径,直接使用MinGW自身环境编译,链接wtsapi32库即可:
g++ -o executable script.cpp -lwtsapi32
(user32库通常会被Windows.h间接关联,无需额外指定)
3. 升级MinGW版本
如果上述方法无效,检查你的MinGW版本是否过旧。推荐使用MinGW-w64(较新分支,对Windows 10+ API支持更完善),替换旧版MinGW后重新编译。
内容的提问来源于stack exchange,提问作者Philip Müller
相关产品推荐
相关产品推荐

