我是C++的新手,我真的坚持使用Botan连接到硬件加密令牌。我不知道我是不是错过了小牛或小鸭子的装备。
我建立了基于在Windows 10环境下构建Botan库的Botan库。botan.lib和botan.dll是在构建后在lib文件夹中创建的。
然后使用以下简单代码在VisualStudio2019中创建一个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;
}这是我准备运行的设置:
配置Properties→VC++目录:
链接器
另外,我还安装了System32文件夹中的dll令牌驱动程序;
当我用x86构建时,我用这个配置调试了这个项目:

我需要你帮忙解决的错误是:
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。
谁来帮帮忙,谢谢
发布于 2019-08-16 16:35:44
使用Vcpkg,这是微软创建的一个工具,帮助获取和构建开源C和C++库,它使用一个线性shell命令行自动安装botan,并集成到VS 2019项目中。
从GitHub安装vcpkg之后,从PowerShell提示符中键入以下命令以下载和安装库,包括所有依赖项:
.\vcpkg install botan:x86-windows使用它自动(或者您可以手动完成)将库集成到VS项目中。
.\vcpkg integrate install这是严重的错误,这就是为什么您的项目不能识别名称空间和包含文件,包含目录→添加C:\botan\→\botan-2是不正确的检查目录/文件名botan-2,它不应该存在。
将dll文件复制到项目目录(用于调试测试)和应用程序文件夹(调试或发布版本),并在加载PKCS#11共享库时不要忘记更正dll文件夹路径。
https://stackoverflow.com/questions/57494986
复制相似问题