wxWdgets是一个跨平台的库,包括对所有主要Windows版本的支持,但我在wxWidgets文档中找不到任何关于单个 MSW(windows)的可移植性的内容)跨不同的Windows版本构建wxWidgets库。假设我的核心应用程序只使用vanilla C ++(可能是所有平台上可用的win32 apis的最小公分母),除了wx函数之外,静态链接到单个版本的wxWidgets库会生成一个可以在Win2K,XP上运行的二进制文件Vista和Windows 7?该库是否需要在win2K(“功能最少”的平台?)上构建,或者在XP上构建它也能工作?任何提示或指示将不胜感激!
答案 0 :(得分:4)
您可以在任何操作系统版本上构建应用程序,这不会影响应用程序与不同Windows版本的兼容性。您甚至可以在另一个操作系统上交叉编译Windows应用程序。
重要的是选择应用程序引用的API调用。在加载时链接的任何函数都需要存在于操作系统中,而延迟加载的库或API函数不会影响兼容性,只要应用程序正常处理错误。
稳定的wxWidgets版本2.8至少与Windows 2000及所有更高版本兼容(如果使用库的非Unicode版本,甚至可以定位Windows 9X),它会延迟加载Windows中不可用的所有功能2000(例如主题支持,XP引入)。您可以确定应用程序运行,但可能有些东西在Windows 2000上不起作用(例如透明PNG)。
开发环境可能会有额外的最低操作系统版本要求。例如,较新的Visual C ++版本可能需要在较旧的OS版本上安装C运行时,并且可能存在最低支持版本。然而,这与程序中使用的wxWidgets无关。
答案 1 :(得分:1)
是的,wx二进制文件可以在XP-7范围内移植(如果不使用Unicode或使用MSLU,那么同样的二进制文件也应该写在古老的95系统上,但现在很少有人使用它们(谢天谢地)如果没有人注意到,这可能实际上已经破裂了)。 wxWidgets动态地加载所有Windows版本上系统DLL中不存在的任何函数,即通过GetProcAddress()
,并为旧系统使用合理的回退。