qt加密QCA没有编译

时间:2015-10-07 12:07:07

标签: qt cryptography

我在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;

时遇到Segmentation错误

enter image description here

2 个答案:

答案 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

克里斯