我们的团队遇到了一个困扰我们的错误。
以下代码返回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-pass。我们不确定为什么。任何帮助,将不胜感激。谢谢!
我们以历元为起点,在经过的时间戳上进行TimeDate计算。MFC不允许在纪元之前添加日期,因此所有UTC +都无法创建日期。该错误已修复。谢谢大家
这是导致该问题的代码(已修复)。我们增加了一天的工作时间。CTime :: CTime(1970,1,1,0,0,0)w / UTC +使得它在1970年1月1日之前在伦敦失败。
谢谢!
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;
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句