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

标签 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 左右的 .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 信息对我没有帮助:(

最佳答案

您链接到 here 的说明的第 7 步显得很奇怪。通常情况下,您会分别为 Release 和 Debug 选择 /MD/MDd或者您会选择 /MT/MTd

关键在于您将加密的发布版本链接到 C 运行时库的动态版本(通过 /MD),但您的测试 exe 设置为链接到静态版本(通过 /MT).

您应该只链接到 CRT 的单一版本 - 即在 Release模式下重新编译 crypto++ 设置 /MT 而不是 /MD,或者将您的测试 exe 更改为使用 /MD

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

关于c++ - Crypto++ 无法构建 Qt 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17055990/

相关文章:

c++ - 包含一批到 "Include Additional Directories"Visual C++ 的库和目录路径的任何方法

c++ - 在 Qt Creator 中自动增加内部版本号

c++ - 如何创建语音聊天应用程序(SIP 协议(protocol))

c++ - 使用 QRegExp 排除反斜杠?

c++ - 面向对象设计 : Multiple instances but Static Callbacks

c++ - Qt 是否有与 Boost 的分配模块等效的东西?

c++ - 如何减少大量包装类的实现代码?

c# - 如何使用 C# 反转 XAML PNG 图像的颜色?

visual-studio-2010 - 使用 ASP.NET 开发服务器设置 MIME 类型

C++ 服务器端脚本