Visual Studio为C和C++项目提供目标平台版本设置。我正在使用目标平台版本 8.1 构建代码。但是,当我使用 CMake 为某些第三方库生成 MSVC 解决方案时,默认设置为目标平台版本 10.x。当应用程序使用使用目标平台版本 10.x编译的库时,我的应用程序仍然可以在旧版 Windows 版本(例如 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/