Crypto ++无法构建Qt应用程序

时间:2013-06-12 00:35:22

标签: c++ visual-studio qt visual-c++ crypto++

我目前正在尝试在我的Qt应用程序中运行Crypto ++。但它不起作用。希望你们中的某些人知道什么是错的,因为我还没弄明白,我现在已经3天了。

为了集中解决这个问题,我创建了一个测试应用。保留此代码:http://pastebin.com/1XMARtds取自http://programmingknowledgeblog.blogspot.de/2013/04/compiling-and-integrating-crypto-into.html

我的.pro看起来像这样:

TEMPLATE = app
CONFIG += console
CONFIG -= app_bundle
CONFIG -= qt

SOURCES += main.cpp

win32:CONFIG(release, debug|release): LIBS += -L$$PWD/../Savor_V100/libraries/ -lcryptlib
else:win32:CONFIG(debug, debug|release): LIBS += -L$$PWD/../Savor_V100/libraries/ -lcryptlibd
else:unix: LIBS += -L$$PWD/../Savor_V100/libraries/ -lcryptlib

INCLUDEPATH += $$PWD/../Savor_V100/includes/cryptopp562
DEPENDPATH += $$PWD/../Savor_V100/includes/cryptopp562

我使用MS Visual Studio 2012编译了库。 当我使用这些设置时:http://i.imgur.com/Nd9TEIA.png

我得到一个50mb-ish .lib文件。

当我尝试在Qt Creator(5.0.2)中构建我的应用程序时,我得到以下内容: http://i.imgur.com/RbCGQDU.png

很多:

cryptlib.lib(cryptlib.obj):-1: error: LNK2038: mismatch detected for 'RuntimeLibrary': value 'MT_StaticRelease' doesn't match value 'MD_DynamicRelease' in main.obj

它还说:找不到文件:cryptlib.lib(cryptlib.obj)

如果我将.obj文件放在与.lib文件相同的文件夹中,我就会删除“找不到文件”错误。但没有别的变化。

有人可以解释一下我做错了什么吗?网站上的LNK2038信息对我没有帮助:(

2 个答案:

答案 0 :(得分:2)

您链接到here的说明的第7步似乎很奇怪。通常,您分别为发布和调试选择/MD/MDd选择/MT/MTd

关键是你将你的Release版本的加密链接到C运行时库的动态版本(通过/MD),但你的测试exe设置为链接到静态版本(通过{{1 }})。

您应该只链接到单个版本的CRT - 即在发布模式下重新编译加密++,而/MT设置而不是/MT,或者更改您的测试用例以使用/MD。< / p>

有关这些标志的更多信息,请参阅msdn docs

答案 1 :(得分:1)

谁想在linux上运行crypto ++(我在ubuntu上做过),在通过apt-get install下载库后,应该添加到pro文件中: LIBS + = -L / usr / lib / crypto ++ -lcrypto ++ 祝你好运!