使用 C++ 和 bcrypt 标头时编译错误
Compile errors when using C++ and bcrypt header
我正在尝试测试Windows Bcrypt。我有一个测试程序:
#include <bcrypt.h>
#include <iostream>
#include <string>
#pragma comment (lib, "bcrypt.lib")
int main(int argc, char* argv[])
{
return 0;
}
尝试编译它:
>cl.exe /DWINVER=0x0600 /TP /GR /EHsc bcrypt-test.cpp /link /out:bcrypt-test.exe
Microsoft (R) C/C++ Optimizing Compiler Version 19.00.24210 for x64
Copyright (C) Microsoft Corporation. All rights reserved.
bcrypt-test.cpp
C:Program Files (x86)Windows Kits10include10.0.17763.0sharedbcrypt.h(39):
error C2059: syntax error: 'return'
C:Program Files (x86)Windows Kits10include10.0.17763.0sharedbcrypt.h(40):
error C2143: syntax error: missing ';' before '*'
C:Program Files (x86)Windows Kits10include10.0.17763.0sharedbcrypt.h(40):
error C4430: missing type specifier - int assumed. Note: C++ does not support d
efault-int
...
C:Program Files (x86)Windows Kits10include10.0.17763.0sharedbcrypt.h(681)
: error C3646: 'cbKeyLength': unknown override specifier
C:Program Files (x86)Windows Kits10include10.0.17763.0sharedbcrypt.h(681)
: fatal error C1003: error count exceeds 100; stopping compilation
我正在使用Visual C++ x64 生成工具命令提示符。据我了解,Bcrypt需要针对Vista或更高版本。WINVER=0x0600
应满足要求。我在 MSDN 论坛的 bcrypt.h build error?上发现了一个类似的问题,它说要使用现代 SDK。我相信Windows Kit SDK应该满足这个要求。
为什么我遇到编译错误,如何解决?
bcrypt.h
中的第 39 行是下面的第一个 typedef。序言,如版权和标题护罩,为简洁起见被跳过。
#ifndef WINAPI
#define WINAPI __stdcall
#endif
#ifndef _NTDEF_
typedef _Return_type_success_(return >= 0) LONG NTSTATUS;
typedef NTSTATUS *PNTSTATUS;
#endif
#ifndef BCRYPT_SUCCESS
#define BCRYPT_SUCCESS(Status) (((NTSTATUS)(Status)) >= 0)
#endif
您缺少包含。
#include <Windows.h> // <- Added this
#include <bcrypt.h>
#include <iostream>
#include <string>
#pragma comment (lib, "bcrypt.lib")
int main()
{
return 0;
}
相关文章:
- std::is_base_of表示ctor编译错误
- Qt5:使用QCommandLineParser类时出现奇怪的编译错误
- 如何修复sfml c++代码编译错误
- 使用 MATLAB 编码器生成C++代码:编译错误"undefined reference to `rgb2gray_tbb_real64'"
- 使用外部SDK工具链文件在VisualStudio上生成项目编译错误
- vscode下的Arduino代码出现意外编译错误
- 第三方 API 中的编译错误 - Visual Studio
- std::cout输出int时出现编译错误
- 奇怪的代码抛出编译错误模板< J,int aSize=10> C2143:语法错误:在"<"之前缺少";"
- 提升图广度优先搜索前置编译错误
- C++ 中的编译错误:未定义对"主"的引用 collect2:错误:ld 返回 1 个退出状态
- 使用带有 ref 参数的成员函数创建线程时出现编译错误
- 我在C++中遇到了这个奇怪的编译错误
- 在C++中使用 Catch 测试框架编译错误"error: expected ';' at end of declaration list"
- 使用 std::enable_if 限制派生类的模板参数时出现编译错误
- 现代OpenGL和GLEW Libraray的编译错误
- C++ 编译错误:意外的类型名称"字符串":预期的表达式
- C ++程序编译错误,找不到/访问文件
- 使用直接大括号初始化时,C++ 编译错误"声明末尾的预期";"
- 为什么传递非静态成员函数会导致编译错误?