在项目中有几个库原来的代码是定义了_WIN32_WINNT和WINVER为0x0501。然后在改造一个老项目(所有静态库和主程序定义_WIN32_WINNT和WINVER为0x0500)时加入了这几个库。然后将主程序的编辑命令行中也加入了_WIN32_WINNT=0x0501。
结果编译一切正常,在运行时在各种奇怪的地方崩溃。比如,有一个窗口类(还继承了一个其它接口)在new过之后的指针中有时虚表指针正常,有时为0x00000000,执行时就崩溃了。
经排查,将_WIN32_WINNT和WINVER统一为0x0501后正常。
网友评论