在Visual Studio 2013下重建Crypto ++ 5.6.2 for / MD版本

时间:2015-10-21 15:48:23

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

我想通过MSVC 2013重建Crypto ++,所以当我使用该库能够使用/ MD或/ MDd,NOT / MT或/ MTd构建我的项目时,因为我正在使用QT 5.5.1和MSVC2013 32bit编译器,似乎我想制作GUI界面 - 它使用/ MD或/ MDd!在Static Versus Dynamic Linking部分... dependencies { compile "org.springframework.boot:spring-boot-starter-logging" compile "org.springframework.boot:spring-boot-starter-actuator" compile "org.springframework.boot:spring-boot-autoconfigure" provided "org.springframework.boot:spring-boot-starter-tomcat" compile "org.grails:grails-dependencies" compile "org.grails:grails-web-boot" ... 中的文章中提到了重建(不构建)的必要性以及如何从我的其他this中看到我做到了,但它只适用于调试模式。对于释放模式,从117的错误变为53,但同样出现相同的旧错误:

  

cryptlib.lib(cryptlib.obj): - 1:错误:LNK2038:检测到不匹配   'RuntimeLibrary':值'MT_StaticRelease'与值不匹配   main.obj中的“MD_DynamicRelease”

我正在做的就是我提到的question

2 个答案:

答案 0 :(得分:1)

  

我想通过MSVC 2013重建Crypto ++ ......

好的,所以这里的痛点是Microsoft changes to MSBuild at 2010。更糟糕的是,VCUpgrade does a rather poor job of up-converting projects

为了帮助用户完成升级过程,Crypto ++提供了一个名为vs2010.zip的文件。存档包含Visual Studio 2010及更高版本的预转换解决方案文件,项目文件和过滤器。这些文件于2015年10月发布,发布了5.6.3候选版本。

升级的解决方案文件大部分都是成功的。他们从IDE中正确构建了24个配置中的20个。其中4个在第一次尝试时失败;但是这个过程在第二次尝试中恢复并构建了所有24.我们知道它的依赖/排序问题,但我们不知道如何解决它。关于Stack Overflow的问题是How to control order of Batch Build → Build All

现在有一个关于Visual Studio 2010和VCUpgrade主题的页面。请参阅Crypto ++ wiki上的Visual Studio

  

在本文中......

我在that article年前写过。你走在正确的轨道上。

  

我做到了,但它只适用于调试模式。对于释放模式,从117的错误变为53,但同样出现相同的旧错误:

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

我们为您添加了一个ZIP文件。 ZIP是预转换的Visual Studio 2010解决方案和项目文件,它们使用动态运行时链接(/MD/MDd)。 (这不仅仅是因为很多人多年来一直在问这个问题。)

解决问题的方法是:

  1. 从Crypto ++ wiki
  2. 下载vs2010-dynamic.zip
  3. 解压缩现有的Crypto ++分发文件。

答案 1 :(得分:0)

我使用来自/ MD的源码的cryptopp,使用最新的cryptopp版本(5.6.2)在vs2013上构建。您希望了解加密或安全软件的最新信息,以及它们可能存在固定的平台构建问题。

您引用的问题听起来像是使用/ MT设置构建项目的中间文件,即使它后来更改为/ MD(尽管忘记将下拉菜单更改为"所有配置& #34 ;,并只更改一个项目中的调试设置。)

首先清洁解决方案,然后确保以[粗体]所有配置[粗体]将每个项目更改为/ MD,并再次清理解决方案。现在搜索并删除任何调试或发布文件夹和.obj .lib .dll文件,因为我不信任"清洁解决方案"。它只能获取它打算在当前设置下构建的文件,但链接器可能会在链接搜索中找到更多(/ verbose:lib)。

然后重建所有。