c++ - OpenABE C++ 库:未定义的引用错误
问题描述
我已成功安装 OpenABE 库 - https://github.com/zeutro/openabe
但是当我尝试编译自己的程序或运行示例时 - https://github.com/zeutro/openabe/blob/master/examples/test_cp.cpp
g++ 测试.cpp
我得到错误:
/tmp/ccAcWSoq.o: 在函数
main': test.cpp:(.text+0x29): undefined reference to
oabe::InitializeOpenABE()' test.cpp:(.text+0x6a): 未定义引用oabe::OpenABECryptoContext::OpenABECryptoContext(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool)' test.cpp:(.text+0xea): undefined reference to
oabe::OpenABECryptoContext::generateParams()' test.cpp:(.text+0x1bf) : 未定义对oabe::OpenABECryptoContext::keygen(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)' test.cpp:(.text+0x27b): undefined reference to
oabe::OpenABECryptoContext::encrypt(std::__cxx11::basic_string, std::allocator >, std::__cxx11::basic_string, std::allocator > const&, std::__cxx11::basic_string, std ::allocator >&)' test.cpp:(.text+0x2dd): undefined reference tooabe::OpenABECryptoContext::decrypt(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)' test.cpp:(.text+0x385): undefined reference to
oabe::ShutdownOpenABE()' /tmp/ccAcWSoq.o: In functionoabe::OpenABECryptoContext::~OpenABECryptoContext()': test.cpp:(.text._ZN4oabe20OpenABECryptoContextD2Ev[_ZN4oabe20OpenABECryptoContextD5Ev]+0xf): undefined reference to
vtable for oabe::OpenABECryptoContext' collect2: error: ld returned 1 退出状态
这是代码 - test.cpp
#include <iostream>
#include <string>
#include <cassert>
#include <openabe/openabe.h>
#include <openabe/zsymcrypto.h>
using namespace std;
using namespace oabe;
using namespace oabe::crypto;
int main(int argc, char **argv){
InitializeOpenABE();
OpenABECryptoContext cpabe("CP-ABE");
string ct, pt1 = "plaintext", pt2;
cpabe.generateParams();
cpabe.keygen("|attr1|attr2","key0");
cpabe.encrypt("attr1 and attr2",pt1,ct);
bool result = cpabe.decrypt("key0",ct,pt2);
assert(result && pt1 == pt2);
cout << "Message: " << pt2 << endl;
ShutdownOpenABE();
return 0;
}
我什至可以正确编译文件吗?或者是否还有其他我似乎无法识别的问题?
解决方案
推荐阅读
- angular - localStorage 值被分页器 NaN 清除
- c++ - 没有额外参数的函数的 GSL 数值积分
- docker - Docker Jenkins 容器因严重 jenkins.InitReactorRunner$1#onTaskFailed: Failed ConfigurationAsCode.init 而崩溃
- spring-boot - Spring - 如何为soap服务构建一个junit测试
- python - 读取 csv 文件中重复的列名
- python - 如何解决“ValueError:“连接”层需要具有匹配形状的输入,连接轴除外”?
- c# - 方法包装器的异步版本
- c++ - creat_list2 函数有什么问题?
- r - 在 R 中处理函数中的变量
- xamarin - 问题仅在 iPhone XS 和 11plus 上渲染 UIDatePicker