我知道有几个类似的问题,但我不认为他们真的有同样的要求我的。

我们的DLL被编译与Visual Studio 2005和必须与CRT的特定版本的链接,由于安装的约束。这是绝对的,与最新版本重新编译它不是一个解决方案。

我们最近更新了Boost库。然而,当我建立加速,它会自动使用最新的CRT。现在,当我与我们的节目链接增强,它会创建两个最新的(错误)的CRT的版本和CRT的旧的(正确的)版本的依赖。在最新版本的依赖需要去。

什么是解决这个问题的最佳解决方案?此刻,我能想到的使用旧版本正在重建提振最好的,但我不知道如何轻松地做到这一点无需修改源。

如果有一种方法强制Visual Studio中使用CRT的特定版本全球(不是在每个项目的基础),这将是巨大的。还是有办法只是简单的去除CRT的最新版本,但我敢肯定这是不可能的,因为我认为这是被认为是操作系统的一部分。

有帮助吗?

解决方案 2

将溶液手动修改嵌入式清单,以除去在最新CRT的依赖性,因为它与动态链接的CRT建造。我怀疑这样做的安全性,虽然。

出于某种原因,力包括在升压构建过程中targetsxs文件不迫使它定位到指定CRT。

其他提示

AFAIK,不建议使用不同版本的CRT的。不像.NET在这里可以指从.NET 2.0 DLL到一个NET 1.1 DLL,非管理型不提供灵活性。

既然你不能升级的dll使用较新的CRT,你唯一可以做的事情是在VS2005重建的推动作用。

此外,它是不建议的连接不同的CRT两个DLL。这可能会导致像内存损坏问题。

注意:每个Visual Studio有其默认CRT版本到所有的DLL指其中

此外,我不理解“删除新的CRT”。您需要安装Visual Studio的Redist为Visual Studio的每个版本使用。 (即REDIST包含CRT DLL) http://msdn.microsoft.com/en-我们/库/ abx4dbyh%28VS.80%29.aspx

您必须准确地找到其结构在提升项目注入上错了CRT的依赖,并删除/修改结构。这可能是东西.vcproj文件或某些清单或类似的东西。

VC ++ 2005和VC ++ 2008阴极射线管含有或多或少同原语 - 你可能可以重新编译完全用VC ++ 2005年提高或调整了一点,之后重新编译。是的,这将需要一些努力,但它是唯一的出路 - 无论你的代码和提升代码必须对您要使用的CRT的版本编译

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top