使用旧版本的MSVCR?

时间:2010-04-24 23:06:51

标签: c++ visual-studio visual-c++

我有VS 2008,我希望我的应用程序能够在不需要包含MSVCR90.dll的情况下使用Windows 98.Win98自带MSVCR60,那我怎么能告诉MSVC这样做呢?是我追捕Visual Studio 6的唯一选择吗?

由于

*我也想避免静态链接msvcr

3 个答案:

答案 0 :(得分:4)

您无法告诉Visual Studio使用早期版本的运行时库。即使您可以使用旧库进行编译,应用程序本身也无法正确运行,因为编译器将插入对它希望在库中的函数的调用,这可能不是这种情况。

我也想避免静态链接msvcr
为什么?这似乎是解决这个问题的完美有效方法。当然,你为它支付大约100kb的代码大小,但这是值得的,因为被迫使用Visual Studio 6的错误和不合格的编译器。

您也可以只包含MSVC ++可再发行组件,它包含正确的DLL,并且不需要标准库的静态链接。

答案 1 :(得分:1)

如果您想要定位Windows 98,您的选项是:

  • 首先,Visual Studio 2005. 2008的最高版本以及在EXE标题中标记最低操作系统版本5.0 - Windows 98将不会加载由VS 2008生成的二进制文件。

关于CRT发行:

  • 使用您的应用分发新运行时。我更喜欢这种方法,如果你的应用程序有很多dll,因为静态链接使得整个批量大于它需要的。另外,如果你至少在一个进程中的所有模块之间共享一个c-runtime实现,那么使用dll中的c ++会有很多限制。

如果您不是c ++特性(例如异常和STL)的“重度”用户,那么您可能无法在任何crt中进行链接。否则你的选择是:

  1. 使用像MinGW这样的非MS编译器。 MinGW使用最新的GCC,因此你得到C99和C ++ 98,C ++ 03,TR1等。它使用msvcrt.dll。 Code :: Blocs是一个“ok”IDE,如果你从未使用过的话 Visual Sutdio和/或对头部造成了太多打击。
  2. 下载Windows DDK。你需要从命令行构建,并使用make文件弄脏,但它是免费的,DDK使用VS2005编译器&链接器,但专门设置为链接msvcrt.dll,而不是msvcr80.dll。它被认为风险太大,需要设备驱动程序链接到可能不存在的运行时。
  3. Visual Studio 6作为最终后备选项。对C ++ 98的可怕糟糕的支持。至少你得到一个漂亮的IDE,它应该是快死了,因为计算机自启动以来理论上速度/容量增加了8倍。

答案 2 :(得分:0)

Low Overhead Microsoft Visual Studio C Runtime是一个静态可链接的C运行时,它最大限度地利用了已经与Windows一起分发的可用DLL。