std::bad_alloc 将 Botan 用于 PKCS#11
std::bad_alloc using Botan for PKCS#11
我是 C++ 的新手,我真的坚持使用 Botan 连接到硬件加密令牌。我不知道我是否错过了库或 dll 的任何设置。
我基于Building Botan library in Windows 10构建了牡丹库。 botan.lib
和 botan.dll
生成后在 lib 文件夹中创建。
然后我在 Visual Studio 2019 年用这个简单的代码创建了一个 consoleApplication:
#include <iostream>
#include <botan/botan.h>
#include <botan/p11.h>
#include <botan/p11_slot.h>
#include <botan/p11_session.h>
#include <botan/p11_module.h>
#include <botan/p11_object.h>
#include <botan/p11_randomgenerator.h>
#include <botan/p11_x509.h>
#include <botan/x509_dn.h>
using namespace Botan;
using namespace PKCS11;
int main()
{
Botan::PKCS11::Module module("C:\Windows\System32\ShuttleCsp11_3003.dll");
// Sometimes useful if a newly connected token is not detected by the PKCS#11 module
module.reload();
Botan::PKCS11::Info info = module.get_info();
// print library version
std::cout << std::to_string(info.libraryVersion.major) << "."
<< std::to_string(info.libraryVersion.minor) << std::endl;
}
这是我准备的设置运行:
配置属性→VC++ 目录:
- 包含目录 → 添加 C:\Botan\include\botan-2;
- 可执行目录 → 添加 C:\Botan\bin;
- 库目录 → 添加 C:\Botan\lib;
- 源目录→添加C:\Botan\src;
- 附加包含库 → 添加 C:\Botan\include\botan-2
链接器
- 附加库目录 → 添加 C:\Botan\lib;
- 输入→附加依赖→添加C:\Botan\lib\botan.lib
我还安装了token驱动,dll在System32文件夹中;
当我使用 x86 构建 Botan 库时,我使用以下配置调试项目:
我需要你帮助解决的错误是:
Unhandled exception at 0x74CD2CF2 in ConsoleApplication1.exe: Microsoft C++ exception:
std::bad_alloc at memory location 0x004FF1AC.
此错误发生在这行代码中:
Botan::PKCS11::Module module("C:\Windows\System32\ShuttleCsp11_3003.dll");
这是调用堆栈
请注意,我在调试文件夹中复制了 botan.dll 和 ShuttleCsp11_3003.dll。
有人帮忙,谢谢
使用 Vcpkg,这是一种由 Microsoft 创建的工具,可帮助获取和构建开源 C 和 C++ 库,使用单行 shell 命令行自动安装 botan
并集成到您的VS 2019 项目。
从 GitHub 安装 vcpkg 后,在 PowerShell 提示符下键入以下命令以下载并安装包含所有依赖项的库:
.\vcpkg install botan:x86-windows
使用它自动(或者您可以手动执行)将库集成到您的 VS 项目中。
.\vcpkg integrate install
这是一个严重的错误,这就是为什么你的项目无法识别命名空间和包含文件的原因,包含目录→添加C:\Botan\include\botan-2不正确 检查directory/file名称botan-2,它不应该存在。
- should be C:\Botan\include; as your program includes botan in the folder path (eg #include "botan/botan.h")
将 dll 文件复制到您的项目目录(用于调试测试)和您的应用程序文件夹(调试或发布版本)并且在加载 PKCS#11 共享库时不要忘记更正 dll 文件夹路径。
我是 C++ 的新手,我真的坚持使用 Botan 连接到硬件加密令牌。我不知道我是否错过了库或 dll 的任何设置。
我基于Building Botan library in Windows 10构建了牡丹库。 botan.lib
和 botan.dll
生成后在 lib 文件夹中创建。
然后我在 Visual Studio 2019 年用这个简单的代码创建了一个 consoleApplication:
#include <iostream>
#include <botan/botan.h>
#include <botan/p11.h>
#include <botan/p11_slot.h>
#include <botan/p11_session.h>
#include <botan/p11_module.h>
#include <botan/p11_object.h>
#include <botan/p11_randomgenerator.h>
#include <botan/p11_x509.h>
#include <botan/x509_dn.h>
using namespace Botan;
using namespace PKCS11;
int main()
{
Botan::PKCS11::Module module("C:\Windows\System32\ShuttleCsp11_3003.dll");
// Sometimes useful if a newly connected token is not detected by the PKCS#11 module
module.reload();
Botan::PKCS11::Info info = module.get_info();
// print library version
std::cout << std::to_string(info.libraryVersion.major) << "."
<< std::to_string(info.libraryVersion.minor) << std::endl;
}
这是我准备的设置运行:
配置属性→VC++ 目录:
- 包含目录 → 添加 C:\Botan\include\botan-2;
- 可执行目录 → 添加 C:\Botan\bin;
- 库目录 → 添加 C:\Botan\lib;
- 源目录→添加C:\Botan\src;
- 附加包含库 → 添加 C:\Botan\include\botan-2
链接器
- 附加库目录 → 添加 C:\Botan\lib;
- 输入→附加依赖→添加C:\Botan\lib\botan.lib
我还安装了token驱动,dll在System32文件夹中;
当我使用 x86 构建 Botan 库时,我使用以下配置调试项目:
我需要你帮助解决的错误是:
Unhandled exception at 0x74CD2CF2 in ConsoleApplication1.exe: Microsoft C++ exception:
std::bad_alloc at memory location 0x004FF1AC.
此错误发生在这行代码中:
Botan::PKCS11::Module module("C:\Windows\System32\ShuttleCsp11_3003.dll");
这是调用堆栈
请注意,我在调试文件夹中复制了 botan.dll 和 ShuttleCsp11_3003.dll。
有人帮忙,谢谢
使用 Vcpkg,这是一种由 Microsoft 创建的工具,可帮助获取和构建开源 C 和 C++ 库,使用单行 shell 命令行自动安装 botan
并集成到您的VS 2019 项目。
从 GitHub 安装 vcpkg 后,在 PowerShell 提示符下键入以下命令以下载并安装包含所有依赖项的库:
.\vcpkg install botan:x86-windows
使用它自动(或者您可以手动执行)将库集成到您的 VS 项目中。
.\vcpkg integrate install
这是一个严重的错误,这就是为什么你的项目无法识别命名空间和包含文件的原因,包含目录→添加C:\Botan\include\botan-2不正确 检查directory/file名称botan-2,它不应该存在。
- should be C:\Botan\include; as your program includes botan in the folder path (eg #include "botan/botan.h")
将 dll 文件复制到您的项目目录(用于调试测试)和您的应用程序文件夹(调试或发布版本)并且在加载 PKCS#11 共享库时不要忘记更正 dll 文件夹路径。