我知道有一些类似的问题,但我不认为他们真的有相同的要求,我的。
由于安装限制,我们的dll是用visual studio 2005编译的,必须与crt的特定版本链接。这是绝对的,用最新版本重新编译它不是一个解决方案。
我们最近更新了boost库。然而,当我构建boost时,它会自动使用最新的crt。现在,当我将boost与我们的程序链接时,它会创建对crt的最新(错误)版本和旧(正确)版本的依赖关系。对最新版本的依赖性需要消除。
这个问题最好的解决办法是什么?目前,我能想到的最好的办法是使用旧版本重新构建boost,但是我不知道如何在不修改源代码的情况下轻松地做到这一点。
如果有办法强制visual studio全局使用crt的特定版本(不是基于每个项目),那就太好了。或者只是简单地删除最新版本的crt,但我很确定这是不可能的,因为我认为它被视为操作系统的一部分。

最佳答案

不过,不建议使用不同版本的CRT。与.NET不同,您可以从.NET 2 DLL引用.NET 1.1 DLL,非托管不提供这种灵活性。
由于无法将dll升级为使用较新的crt,因此只能在vs2005中重建boost。
此外,不建议连接不同CRT的两个DLL。它会导致诸如内存损坏之类的问题。
注意:每个visual studio都有其默认的crt版本,所有dll都引用该版本。
我也不明白“去掉新的阴极射线管”。您需要为使用的每个版本的visual studio安装visualstudio redist。(redist包含crt dll)
http://msdn.microsoft.com/en-us/library/abx4dbyh%28VS.80%29.aspx

07-24 09:46
查看更多