【问题标题】:Cannot load qca-ossl in Qt5 application无法在 Qt5 应用程序中加载 qca-ossl
【发布时间】:2013-09-12 13:19:55
【问题描述】:

我决定将我的应用程序从 Qt4 迁移到 Qt5。在 Qt4 中,我使用 QCA 和 QCA-OSSL 没有任何问题,但现在 OSSL 插件不想加载。

我已经在 Qt5 下从 git://anongit.kde.org/qca.git 编译了 QCA,所有插件都没有任何问题。比我将 QCA 添加到我的应用程序(我正在使用 CMAKE),它编译正确,但在运行期间它不会允许 AES 密码,因为没有加载 OSSL 插件。

我搜索了论坛,将 libqca-ossl.so 放入 crypto 目录,然后将此目录复制到我的 /usr/lib/qt/plugins 也复制到我的项目和构建目录,但它没有帮助。

如有任何帮助或建议,我将不胜感激。

【问题讨论】:

  • 能否请您粘贴加载问题的确切错误消息?
  • 加载过程中没有错误信息。我只是测试 QCA::isSupported("aes128-cbc-pkcs7") 是否支持 AES 并且它不受支持并且简单地返回 false,所以我将向用户显示什么消息。
  • 好吧,那看起来不像是插件加载问题,而更像是插件不支持该功能。选择支持它的插件,或确保插件已加载。 “已加载”有一个布尔方法。

标签: c++ qt cryptography cmake qt5


【解决方案1】:

好的,我得到它的工作整个问题是在这个......
1) git://anongit.kde.org/qca.git 的 CMake 生成 config-qca.h 到 QCA 源目录。
2) 在这个文件中有 #define QCA_PLUGIN_SUBDIR "qca-qt5" 而不是预测的 "crypto"

一种可能的解决方案是:
1) 删除 QCA 中的 lib 目录(如果之前的配置有)
2) 运行 CMAKE
3) 在config-qca.h中将“qca-qt5”改为“crypto”
4) 建立图书馆
5) 将库添加到您的项目中,然后它应该正确加载所有插件

【讨论】:

    【解决方案2】:

    一个很好的解决方案,无需实际修复 QCA,来自构建目录:

    cmake . -DQCA_PLUGINS_INSTALL_DIR=`qmake -query QT_INSTALL_PLUGINS`/crypto
    

    这会将插件与 Qt 插件一起安装。如果不想在那里安装,可以在 QT_PLUGINS_PATH 环境变量中添加另一个路径,然后安装在那里,仍然添加加密目录。

    【讨论】:

      【解决方案3】:

      截至 2015 年 12 月 1 日的 QCA 2.1.1,在 OSX 上:

      从 kde anongit 获取 qca

      brew install openssl # fixes apple's openssl deprecation error
      export PATH=$PATH:/path/to/qt5/bin/qmake
      cmake . -DCMAKE_PREFIX_PATH=/usr/local/opt/openssl #use the new openssl
      make install
      

      【讨论】:

        猜你喜欢
        • 2016-05-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-04-01
        相关资源
        最近更新 更多