我在Ubuntu 15.04下为qca安装了以下qca包:
qca2-utils
qca-qt5-2-utils
libqca2
libqca2-plugin-cyrus-sasl
libqca2-plugins
libqca-qt5-2-dev
libqca2-dbg
libqca2-plugin-gnupg
libqca-qt5-2
libqca-qt5-2-plugins
libqca2-dev
libqca2-plugin-ossl
libqca-qt5-2-dbg
运行命令dpkg -L libqca2
时,我得到以下信息:
/.
/usr
/usr/lib
/usr/lib/x86_64-linux-gnu
/usr/lib/x86_64-linux-gnu/libqca.so.2.1.0
/usr/share
/usr/share/doc
/usr/share/doc/libqca2
/usr/share/doc/libqca2/copyright
/usr/share/doc/libqca2/changelog.Debian.gz
/usr/lib/x86_64-linux-gnu/libqca.so.2
.pro
文件包含条目:
CONFIG += c++11 crypto
在main.cpp中我有:
#include <Qca-qt5/QtCrypto/QtCrypto>
#include <QtCrypto/QtCrypto>
int main(int argc, char *argv[]) {
QCA::Initializer init;
return 0;
}
但是我收到了错误
/main.cpp:37: error: undefined reference to `QCA::Initializer::Initializer(QCA::MemoryMode, int)'
我需要在.pro
文件中安装或添加其他内容吗?
编辑:
好的,可以解决编译错误,但现在我在调用QCA::Initializer init;
答案 0 :(得分:2)
这是一个链接错误,即找到标题,您的代码编译但链接器无法从您的.o文件和libqca2库创建最终二进制文件。
您需要告诉链接器它应该查找libqca。这通常通过添加到.pro(未经测试):
来完成LIBS += -lqca
我不知道CONFIG += crypto
做了什么,因为我从未遇到过其他配置值而不是此处记录的配置值:http://doc.qt.io/qt-5/qmake-variable-reference.html#config所有Qt模块(包括自动链接)都通过QT变量进行,例如QT += core gui widgets
。
Ubuntu的libqca2仅限Qt 4!
关于您的细分错误:我认为问题在于libqca2 is made for Qt 4 and you are using Qt 5 (right?)。
您可以在此处确认libqca需要Qt 4:http://packages.ubuntu.com/vivid/libqca2
我不知道QCA是否仍然存在。所以你可能需要在Qt 4中使用它或者寻找替代方案。
您可能自己可以为Qt 5编译QCA,但这需要高级构建系统知识:https://github.com/JPNaude/dev_notes/wiki/Using-the-Qt-Cryptographic-Architecture-with-Qt5
答案 1 :(得分:0)
LIBS + = -L / usr / lib / x86_64-linux-gnu LIBS + = -lqca-qt5_LIBNAME
克里斯