在 Qt 中编译植物样本示例时出错

Posted

技术标签:

【中文标题】在 Qt 中编译植物样本示例时出错【英文标题】:Error while compiling botan sample example in Qt 【发布时间】:2012-08-10 10:30:08 【问题描述】:

我试图找出错误两天,但仍然没有弄清楚这个未知原因。

我已经配置并编译了 Botan 库。一切正常,但是当尝试编写要运行的示例代码时..

S2K* s2k = get_s2k("PBKDF2(SHA-256)");
s2k->set_iterations(4049);
SecureVector<byte> key_and_IV = s2k->derive_key(48, passphrase).bits_of();
SymmetricKey key(key_and_IV, 32);

它显示错误:“class Botan::PBKDF”没有名为“set_iterations”的成员

我该如何解决这个问题?

【问题讨论】:

我不使用 Botan 库,但查看the documentation,似乎get_s2k() 已被get_pbkdf() 弃用。您使用的是什么版本的库? 我正在使用当前的稳定版本 1.10....我应该使用旧版本吗?? 【参考方案1】:

v1.11.1 的 Botan 文档报告说函数 get_s2k() 已被弃用,建议您改用 get_pbkdf()

根据文档,get_sdk(algospec) 只返回调用 get_pbkdf(algo_spec) 的结果,这将为您提供指向 class Botan::PBKDF 实例的指针。

首先,您的代码需要更像:

PBKDF *s2k = getpbkdf("PBKDF2(SHA-256)");

不幸的是,我不知道你想用s2k做什么,因为文档没有引用PBKDF的公共成员函数set_iterations()。您收到您提到的错误,因为Botan::PBKDF 确实没有名为set_iterations 的成员。您需要阅读文档,了解 set_iterations() 在您现在已弃用的示例中的用途,以及如何在较新版本的库中实现该目的。

【讨论】:

您能否将我们链接到您找到示例代码的位置?这可能有助于阐明:)【参考方案2】:

您可能错过了您的库标题...正如您的错误消息所说:“没有名为...的成员...”

【讨论】:

以上是关于在 Qt 中编译植物样本示例时出错的主要内容,如果未能解决你的问题,请参考以下文章

为 ARM 交叉编译 Qt 时出错

使用 PostgreSQL 编译静态 Qt 5.10.0 时出错

为树莓派 pi3 交叉编译 Qt 时出错

qt 编译时出错,请高手指教。

使用 Github Actions 为 Windows 编译 QT 应用程序时出错

从 ParaView 构建自定义 Qt 应用程序示例时出错