【问题标题】:Setting up botan in visual C++在 Visual C++ 中设置植物
【发布时间】:2019-12-10 02:00:35
【问题描述】:

出于某种原因,我想出使用 botan 连接到 PKCS11 硬件令牌。我是 C++ 新手,想用 Visual Studio 2019 编写代码。

我下载了botan源代码并使用nmake构建了源代码。构建完成后,创建一个名为 build 的文件夹。

我将botan的目录添加到VC++目录[右键单击应用程序-->属性-->VC++目录]

    #include <iostream>
    #include <botan\botan.h>
    #include <botan\alg_id.h>
    #include <external\pkcs11t.h>
    #include <external\pkcs11f.h>
    #include <external\pkcs11.h>


   int main() {

    Botan::Dynamically_Loaded_Library pkcs11_module("C:\\pkcs11-middleware\\library.dll");
    Botan::PKCS11::FunctionListPtr func_list = nullptr;
    Botan::PKCS11::LowLevel::C_GetFunctionList(pkcs11_module, &func_list);
    Botan::PKCS11::LowLevel p11_low_level(func_list);


   }

这些行有错误

  • 命名空间 Botan 没有成员“Dynamically_Loaded_Library”

    Botan::Dynamically_Loaded_Library

  • 名称后跟“::”必须是类或命名空间

所有的行都有错误,我真的搞混了。帮助将不胜感激

【问题讨论】:

  • 您是否只是根据您对 botan 的拼写错误创建了 boton 标签?在任何情况下不要键入代码或错误消息:始终复制和粘贴。请用复制错误编辑您的问题,而不是拼写错误的手工输入材料
  • 我对Botan不熟悉,但似乎Dynamically_Loaded_Library位于dyn_load.h
  • @James K Polk 感谢您的评论。我编辑问题。
  • 请在自己的测试中检查使用examples。与您的错误无关,但据我所知,PKCS#11 标头必须通过cryptoki.h 文件包含。

标签: visual-studio visual-c++ cryptography pkcs#11 botan


【解决方案1】:
  1. 构建 Botan 源代码:

1-1。打开 Visual Studio 2019 的开发人员命令提示符

1-2。 python "c:\botan\configure.py" --cc=msvc --cp=i386

1-3。制作

1-4。 python "c:\botan\install.py"

1-5。 nmake 安装

  1. 在visual studio中右键应用程序-->属性-->VC++目录

2-1。包含目录:添加 C:\Botan\include\botan-2

2-2。库目录:添加 C:\Botan\lib

  1. 在visual studio中右键应用-->属性-->链接器-->输入-->附加依赖-->添加botan.lib

  2. 不要忘记将调试模式设置为 x86

  3. 感谢@Alexander,我应该包含“p11.h”并使用命名空间 PKCS11 定义;

  4. 重建项目:)

【讨论】: