LoadFrame(MFC)仅在澳大利亚失败

我们的团队有一个困扰我们的错误。

以下代码返回false:

CMainFrame* pMainFrame = new CMainFrame; if (!pMainFrame->LoadFrame(IDR_MAINFRAME)) { AfxMessageBox(GetStr(IDS_MAINFRM_FAIL_TO_LOAD)); ASSERT(FALSE); return FALSE; } 

我们使用VS2010进行编译,并且安装了RogueWave Stingray组件。 CMainFrame是CBCGPMDIFrameWnd,它基于CMDIFrameWnd,由BCGSoft制作 。

我们的软件在全球约100台机器上运行,没有任何问题。 它在Windows 7-10 x86和x64上运行。 它一直工作,直到本周。 澳大利亚米尔迪拉的一小撮人报告了一个问题。 对于所有这些,运行WIN7x86Enterprise和Win10x64Home,上面的代码片段返回false。 我亲自检查了他们的一台机器(Win10x64Home),看起来一切正常。

我已经尝试删除该项目的RES和APS文件 。 这没有帮助。

有谁知道这个问题可能是什么? 我接受教育的猜测。

提前致谢!

PS:新信息:看起来像是一个时间问题。 在计算机上,所有UTC +失败,UTC0和UTC-通过。 我们不知道为什么。 任何帮助,将不胜感激。 谢谢!

我们使用epoch作为起点,对经过的时间戳进行TimeDate计算。 MFC不允许日期之前的日期 ,所以所有的UTC +日期创建失败。 这个bug已经修复。 谢谢大家。

这是导致问题的代码(固定)。 我们增加了一天的工作。 CTime :: CTime(1970,1,1,0,0,0)w / UTC +,在伦敦1/1/1970之前,失败。

谢谢!

 CTime t1 = CTime::CTime(yearInt,monthInt,dayInt,0,0,0); CTime t2 = CTime::CTime(1970,1,2,0,0,0); CTimeSpan timeSpan = t1-t2; versionDate = timeSpan.GetDays() + 1;