#include <wincrypt.h>编译有问题的

发布时间 2023-05-16 17:28:57作者: 曦花

Cmake-gui生成sln后,再次vs打开sln,遇到编译失败。

提示的是

#include <wincrypt.h>

4>C:\Program Files (x86)\Windows Kits\10\Include\10.0.19041.0\um\wincrypt.h(380,29): error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int
4>C:\Program Files (x86)\Windows Kits\10\Include\10.0.19041.0\um\wincrypt.h(380,19): error C2146: 语法错误: 缺少“;”(在标识符“HCRYPTPROV”的前面)
4>C:\Program Files (x86)\Windows Kits\10\Include\10.0.19041.0\um\wincrypt.h(899,17): error C3646: “dwVersion”: 未知重写说明符
4>C:\Program Files (x86)\Windows Kits\10\Include\10.0.19041.0\um\wincrypt.h(899,26): error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int
4>C:\Program Files (x86)\Windows Kits\10\Include\10.0.19041.0\um\wincrypt.h(901,13): error C2143: 语法错误: 缺少“;”(在“*”的前面)
4>C:\Program Files (x86)\Windows Kits\10\Include\10.0.19041.0\um\wincrypt.h(901,13): error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int
4>C:\Program Files (x86)\Windows Kits\10\Include\10.0.19041.0\um\wincrypt.h(901,19): error C2238: 意外的标记位于“;”之前
4>C:\Program Files (x86)\Windows Kits\10\Include\10.0.19041.0\um\wincrypt.h(902,13): error C3646: “cbOID”: 未知重写说明符

 

要将 #include <windows.h>放在#include <wincrypt.h>前面

#ifdef _WIN32
#include <windows.h>
#include <wincrypt.h>
#else
#include <openssl/hmac.h>
#endif

以后在遇到类似问题:

可能是其他window系统文件的顺序,

注意需要将windows.h和windef.h加到最前,放在 wincrypt.h之前

 

后来发现网上已经提供过方法,自己么有找,先将他们的网页引用

参考https://blog.csdn.net/weixin_34008933/article/details/92344603

参考 https://blog.csdn.net/weixin_34008933/article/details/92344603