Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/135.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ QT和Crypto++;随附/MTd_C++_Qt_User Interface_Crypto++ - Fatal编程技术网

C++ QT和Crypto++;随附/MTd

C++ QT和Crypto++;随附/MTd,c++,qt,user-interface,crypto++,C++,Qt,User Interface,Crypto++,我有两个使用MSVC2013 32位编译器的Qt5.5项目。第一个是Qt控制台应用程序,使用crypto++和pro文件中的这两个: QMAKE_CXXFLAGS_RELEASE += /MT QMAKE_CXXFLAGS_DEBUG += /MTd 第二个是Qt小部件应用程序,它是基于对话框构建的GUI。单独地,每个都成功启动,但也单独地,在pro文件中添加相同内容的GUI项目(如上所述)出现相同的旧错误: qtmain.lib(qtmain_win.obj):-1:错误:LNK2038:检

我有两个使用MSVC2013 32位编译器的Qt5.5项目。第一个是Qt控制台应用程序,使用crypto++和pro文件中的这两个:

QMAKE_CXXFLAGS_RELEASE += /MT
QMAKE_CXXFLAGS_DEBUG += /MTd
第二个是Qt小部件应用程序,它是基于对话框构建的GUI。单独地,每个都成功启动,但也单独地,在pro文件中添加相同内容的GUI项目(如上所述)出现相同的旧错误:

qtmain.lib(qtmain_win.obj):-1:错误:LNK2038:检测到的不匹配 “RuntimeLibrary”:值“MD\u DynamicRelease”与值不匹配 main.obj中的“MT_StaticRelease”

有没有办法以某种方式将这两个项目结合起来?另外,请解释以下内容的含义和区别:

multi-threaded DLL(/MD)
multi-threaded (/MT)
动态库和/MD之间以及静态库和/MT之间的链接是什么

这是由于混合和匹配了C/C++运行库

Crypto++有四个项目:
Cryptlib
Cryptest
Cryptdll
Dlltest
。使事情进一步复杂化的是,
Cryptlib
Cryptest
具有被
Cryptdll
Dlltest
重复使用的DLL导入配置。一旦你明白了发生了什么,它就有了很大的逻辑意义

您正在针对非DLL导入进行链接,并且它使用静态链接。您需要切换到针对动态链接的运行库进行链接。为此,请参见。它很古老,但仍然适用

您还应该避免
DLL\u输出路径中的任何内容。虽然它使用正确的运行时库链接,但您正在尝试针对DLL进行链接。DLL的存在有一个目的——作为FIPS 140-2验证模块的安全边界。它通常不是你正在寻找的,而且通常是错误的


因为您还应该避免
DLL\u输出的任何内容,所以打开配置管理器并删除任何与DLL相关的内容(例如,
DLL导入版本
)。您还应该完全删除
Cryptdll
Dlltest
项目,以简化您的生活。

您已经提出了这个问题,并获得了一个指向现有Q+a的链接,该链接解释了您必须做的事情。没有什么理由期待另一个结果,你必须解释为什么你不知道如何重建Qt。为什么要重建Qt?我为crypto++找到了一种调试模式的方法,但它在发布模式下不起作用!见下面我的答案。密切相关(你的另一个问题):。它谈到修复损坏的VCUpgrade过程。解决方案是重建cryptop 5.6.3rc5,而不是为每个项目构建库(Scriptlib项目32位relsease或批生成调试),并将代码生成配置为/MD或/MDd。如果不起作用,请参阅链接。
qtmain.lib(qtmain_win.obj):-1: error: LNK2038: mismatch detected for 'RuntimeLibrary':
value 'MD_DynamicRelease' doesn't match value 'MT_StaticRelease' in main.obj