选择哪个 Visual C/C++ 运行-时间库?
Which Visual C/C++ run-time library to pick?
我偶然发现了错误的 MSVC 运行-time 链接或 运行ning 用 C 或 C++ 编写的应用程序的问题。因此,我尽量准确使用正确的版本。
我看到 SDL(Simple DirectMedia Layer)库是用 MSVCRT 预编译的,AFAIK 是用 MSVC 4.2 到 6.0 编译的。尽管如此,该预编译库仍适用于我使用更晚的 Visual Studio 2015 v14.
编译的应用程序
- 为什么将旧的 MSVCRT 与 MSVCR140 链接起来没有问题,例如SDL?
- 有没有办法让库与任何更好的 Visual Studio 编译器兼容?
- 如何使用其他编译器解决这个问题,例如GCC 甚至 Linux 或 Mac?
因为,让我们称它们为复古,运行时被广泛使用,它们总是存在的。但较新的 Visual C++ 使用的较新的运行时可能不会自动存在。此外,一段时间以来,Visual C++ 对单个运行时库进行了标准化,以确保与现有应用程序的向后兼容性。大约 Visual Studio 2012 年的某个时候,它被放弃以支持版本特定的运行时。
您需要将您的应用程序打包到安装程序中,该安装程序还会安装必要的运行时(如果您需要多个运行时,则安装运行时)。
Linux 应用程序打包(RPM、YUM 等)依赖于运行时组件。基本上与 Windows 安装程序相同。依赖项要么是包的一部分,要么由发行版满足。 Linux 共享库是版本化的,可以并排安装多个版本,如果需要,应用程序可以 link 针对特定版本。
我偶然发现了错误的 MSVC 运行-time 链接或 运行ning 用 C 或 C++ 编写的应用程序的问题。因此,我尽量准确使用正确的版本。
我看到 SDL(Simple DirectMedia Layer)库是用 MSVCRT 预编译的,AFAIK 是用 MSVC 4.2 到 6.0 编译的。尽管如此,该预编译库仍适用于我使用更晚的 Visual Studio 2015 v14.
编译的应用程序- 为什么将旧的 MSVCRT 与 MSVCR140 链接起来没有问题,例如SDL?
- 有没有办法让库与任何更好的 Visual Studio 编译器兼容?
- 如何使用其他编译器解决这个问题,例如GCC 甚至 Linux 或 Mac?
因为,让我们称它们为复古,运行时被广泛使用,它们总是存在的。但较新的 Visual C++ 使用的较新的运行时可能不会自动存在。此外,一段时间以来,Visual C++ 对单个运行时库进行了标准化,以确保与现有应用程序的向后兼容性。大约 Visual Studio 2012 年的某个时候,它被放弃以支持版本特定的运行时。
您需要将您的应用程序打包到安装程序中,该安装程序还会安装必要的运行时(如果您需要多个运行时,则安装运行时)。
Linux 应用程序打包(RPM、YUM 等)依赖于运行时组件。基本上与 Windows 安装程序相同。依赖项要么是包的一部分,要么由发行版满足。 Linux 共享库是版本化的,可以并排安装多个版本,如果需要,应用程序可以 link 针对特定版本。