c++ - 带有 Crypto++ 库的 QT 控制台应用程序

标签 c++ macos qt x86-64 crypto++

这让我抓狂。使用 crypto++ 版本 5.6.2。 Mac OSX 上的 Qt 5.2.1。 所有项目都在 QT Creator 中构建。我没有从命令行使用 make

我通过如下解包和构建来构建 crypto++:

  1. qmake -项目
  2. 删除了 GNUmakefile
  3. 在QT中打开修改.pro文件,添加

    macx {
        DEFINES += CRYPTOPP_DISABLE_ASM
    }
    

目标是 cryptopp:

TARGET = cryptopp

设置为发布,运行 qmake 并重建所有。生成动态库:

  • libcryptopp.1.0.0.dylib
  • libcryptopp.1.0.dylib(别名)
  • libcryptopp.1.dylib(别名)
  • libcryptopp.dylib(别名)

创建了一个裸控制台应用程序并包含了我的加密类。 修改.pro文件如下:

macx {

    # CONFIG += release cryptopp
    LIBS += /Users/adviner/Qt5.2.1/5.2.1/clang_64/lib/libcryptopp.1.0.0.dylib

    QMAKE_POST_LINK += install_name_tool -change libcryptopp.1.0.0.dylib $$[QT_INSTALL_LIBS]/libcryptopp.1.0.0.dylib $(TARGET)
}

在 Debug模式下的控制台测试应用程序中。运行 qmake 然后重建所有。我不断收到以下错误:

:-1: error: symbol(s) not found for architecture x86_64
:-1: error: linker command failed with exit code 1 (use -v to see invocation)

我已经检查了这两个项目,它们都在 qmake 构建步骤中包含 x86_64):

cryptopp lib:
qmake /Users/myname/Projects/QTLibs/Source/crypto/cryptopp562/cryptopp562.pro -r -spec macx-clang CONFIG+=x86_64

测试控制台应用:

qmake /Users/myname/Projects/Test/CryptoTest/CryptoTest.pro -r -spec macx-clang CONFIG+=debug CONFIG+=x86_64 CONFIG+=declarative_debug CONFIG+=qml_debug

我做了一些谷歌搜索,但似乎没有任何答案可以解决我的问题。有任何想法吗?我在 Windows 上使用 Qt 5.2.1 构建了相同的 crypto++ 库,并在我的应用程序中使用没有问题。

最佳答案

好吧,我终于明白了。当我在 Mac 上构建 crypto++ 库时,我添加了上述内容:

macx {
    DEFINES += CRYPTOPP_DISABLE_ASM
}

在控制台应用程序上,我还必须将它添加到 .pro 文件中,它现在可以工作了

我发现下面的提示也可以修改

/Users/adviner/Qt5.2.1/5.2.1/clang_64/mkspecs/macx-clang/qmake.conf

来自 QMAKE_MACOSX_DEPLOYMENT_TARGET = 10.6

至 QMAKE_MACOSX_DEPLOYMENT_TARGET = 10.9

但它对我没有任何作用。

唯一的解决方案是同时安装 lib 并测试 CRYPTOPP_DISABLE_ASM

关于c++ - 带有 Crypto++ 库的 QT 控制台应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23702414/

相关文章:

c++ - 创建指向指针对象的指针的正确方法?

java - 线程中出现异常 "main"java.lang.OutOfMemoryError : Java heap space: Parsing dblp. xml

android - Qt with android 5.9.0安装报错

c++ - 在不同的类上调用不同的成员函数

c++ - 编译器看不到函数,但可以看到以相同方式使用的所有其他函数

c++ - 标准有误?

mysql - 如何在mysqld_safe运行场景中设置mysql的密码?

Mac OS 上的 Java swing GUI TrayMenu 问题

qt - Qml 垂直文本方向

qt - 类 QToolButton' 没有名为 ‘setToolTipDuration’ 的成员