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

时间:2014-05-16 18:35:50

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

这让我疯了。使用crypto ++ ver 5.6.2。在Mac OSX上的Qt 5.2.1。 所有项目都是在QT Creator中构建的。我没有在命令行中使用make

我通过解压缩和构建如下构建crypto ++:

  1. qmake -project
  2. 删除了GNUmakefile
  3. 在QT中打开并通过添加

    修改.pro文件
    macx {
        DEFINES += CRYPTOPP_DISABLE_ASM
    }
    
  4. 目标是cryptopp:

    TARGET = cryptopp
    

    设置为发布,运行qmake并进行全部重建。生成dylib:

    • 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)
    }
    

    在调试模式下的控制台测试应用程序中。跑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
    

    我做了一些谷歌搜索,但似乎没有回答我的问题。有任何想法吗?我使用Qt 5.2.1在Windows上构建了相同的加密++ lib,并在我的应用程序中使用,没有任何问题。

1 个答案:

答案 0 :(得分:2)

好的,我终于明白了。当我在Mac上构建了crypto ++ lib时,我按上述方法添加了:

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