gpt4 book ai didi

c++ - 标识符 "unlock"未定义

转载 作者:行者123 更新时间:2023-11-28 06:12:26 25 4
gpt4 key购买 nike

在这个示例代码中

http://botan.randombit.net/manual/fpe.html

我试图在 Visual C++ 托管包装器中使用一种方法,但我一直在“解锁”时遇到编译错误这是什么? (可能是 mutex::unlock)我该如何解决错误?

std::vector<byte> sha1(const std::string& acct_name)
{
SHA_160 hash;
hash.update(acct_name);
return unlock(hash.final());
}

错误 16 error C3861: 'unlock': 找不到标识符

编辑:我的 Stdafx.h 文件现在看起来像这样,但它仍然没有编译(即使在包含 secmem.h 之后)

#pragma once

#include <botan/botan.h>
#include <botan/fpe_fe1.h>
#include <botan/sha160.h>
#include <botan/secmem.h>
#include <stdexcept>
#include <vector>

编辑:附加信息 - 我使用的 Botan 库版本是 1.10.9 版(最新的稳定版)。我使用 python 脚本编译并且在 Debug模式下没有排除任何模块(用所有东西构建它)。

最佳答案

我刚刚查了一下,看起来像 Botan v. 1.10.9没有unlock .您有两个选择。

1.10.9版本还有一个 final 可以传递 byte vector 的方法作为获得返回的引用。

类似于:

byte out[hash.output_length()];
hash.final(out);

另一种选择是从 SecureVector 转换至 std::vector .

SecureVector<byte> temp = hash.final();
std::vector<byte> ret(temp.begin(), temp.end());

根据我的应用,我会选择一个而不是另一个。

.

以防有人遇到这个问题并且正在使用 Botan 1.11。

方法 unlock SecureVector 转换至 std::vector在标题中 secman.h .此外,类 SHA_160 还有另一个 final 您可以将 std::vector<byte> 作为参数传递的方法得到输出。使用此方法,您将不需要解锁功能。

关于c++ - 标识符 "unlock"未定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30987320/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com