c++ - 在 MSVC 中将某些库的目标平台版本设置为 10.x 是否会使程序不兼容在 Windows Vista/7/8 上运行?

标签 c++ c visual-c++ build cmake

Visual StudioCC++项目提供目标平台版本设置。我正在使用目标平台版本 8.1 构建代码。但是,当我使用 CMake 为某些第三方库生成 MSVC 解决方案时,默认设置为目标平台版本 10.x。当应用程序使用使用目标平台版本 10.xWindows 版本(例如 Vista/7/8)上运行强>?

最佳答案

如果这些库是可选的 DLL(即您可以在没有它们的情况下运行,只是功能降级),那么有一个解决方案:使用延迟加载。延迟加载的 DLL 仅在调用该 DLL 中的第一个函数时才加载。现在,当您使用 Windows 7/8 时,请避免调用任何此类函数,这样就不会出现加载失败的情况。

静态库可能会导致问题,因为它们链接到您的可执行文件中。这意味着 Windows 7 不会准确地发现问题所在,但当您尝试调用仅在 Windows 10 中引入的函数时,您仍然会遇到问题。但是,如果静态库仅使用 Windows 7 函数,它将起作用。

关于c++ - 在 MSVC 中将某些库的目标平台版本设置为 10.x 是否会使程序不兼容在 Windows Vista/7/8 上运行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45977175/

相关文章:

c++ - CLI 构建的嵌入式 C++ 的 Visual Studio 自定义构建定义

c++ - At 符号 (@) 和美元符号 ($) 在 C 或 C++ 中是否有任何特殊含义

c++ - std::assert 发生了什么

c - 当一个结构在单独的文件中定义时,如何将它们嵌套到另一个结构中?

c++ - 当新表达式的参数子表达式抛出时释放内存

visual-c++ - Visual C++ 中的错误突出显示

java - 采用字符串的不可见 ActiveX

c++ - 将 new[] 与 delete 配对怎么可能只导致内存泄漏?

在 C++ 中将字符串的某些部分转换为 int/double

c++ - C++ 中的一元运算符重载特例