【问题标题】:Rebuild Crypto++ 5.6.2 for /MD release under Visual Studio 2013在 Visual Studio 2013 下为 /MD 版本重建 Crypto++ 5.6.2
【发布时间】:2015-10-21 15:48:23
【问题描述】:

我想通过 MSVC 2013 重建 Crypto++,所以当我使用库时能够使用 /MD 或 /MDd,而不是 /MT 或 /MTd 构建我的项目,因为我使用的是 QT 5.5.1 和 MSVC2013 32 位编译器,似乎我想制作 GUI 界面 - 它正在使用 /MD 或 /MDd!在this 部分Static Versus Dynamic Linking 的文章中提到了重建(而不是构建)的必要性以及您如何从我的其他question 中看到我做到了,但它仅适用于调试模式。对于发布模式,错误从 117 变为 53,但同样的旧错误再次发生:

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

我正在做我提到的here

【问题讨论】:

  • 施加最大压力的问题是失败的 VCUpgrade 转换。因此,我删除了 Qt 标记(它与您的问题无关),并添加了 Visual-Studio 标记(Microsoft 使用损坏的 VCUpgrade 机器制造了这些问题)。
  • 我们添加了一个下载来解决您的问题。请参阅 Crypto++ wiki 上 Visual Studio 下对 vs2010-dynamic.zip 的讨论。

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


【解决方案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 个。我们知道这是一个依赖/排序问题,但我们不知道如何解决它。在 How to control order of Batch Build → Build All 有一个关于 Stack Overflow 的未解决问题。

现在有一个关于 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 是使用动态运行时链接(/MD/MDd)的预转换 Visual Studio 2010 解决方案和项目文件。 (这不仅仅是你,因为多年来很多人都问过这个问题)。

您的问题的解决方案是:

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

【讨论】:

  • “是否有另一种方法可以编译任何版本的 crypto++ 以使用 /MD 或 /MDd 的 MSVC 12.0 的发布模式...” - 你可能可以做到从命令行使用 MSBuild。见How to override a configuration property?
  • 现在它适用于 5.6.3rc5 版本和在 wiki 中下载 vs2010-dynamic.zip。我只测试了 32 位。大家辛苦了,非常感谢。
【解决方案2】:

我正在使用 /MD 的源代码 cryptopp,使用最新的 cryptopp 版本 (5.6.2) 在 vs2013 上构建。您希望了解最新的加密或安全软件,而且它们可能有固定的平台构建问题。

您引用的问题听起来像是使用 /MT 集构建项目的中间文件,即使它后来更改为 /MD(尽管很容易忘记将下拉列表更改为“所有配置”,并且仅更改一个项目中的调试设置)。

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

然后全部重建。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多