C++ 如何从Visual C++;6.0到Visual C++;2010(在64位计算机上)
我试图将Visual C++ 6程序(最初在Windows NT机器上写入)到Visual C++ 2010,以用于我的64位Windows 7 PC。程序编译得很好,但是运行时断言失败,导致调试器中的下列输出: OLE控件的协同创建实例{F9043C85-F6F2-101A-A3C9-08002B2F49FB} 失败了 结果代码:0x80040154 控件是否正确注册 警告:资源项和Win32 Z顺序列表不同步。标签 顺序可能没有很好的定义 警告:CreateDlgControl在对话框初始化期间失败 失败的断言位于occcont.cpp的第925行:C++ 如何从Visual C++;6.0到Visual C++;2010(在64位计算机上),c++,visual-studio-2010,visual-c++,windows-7-x64,windows-nt,C++,Visual Studio 2010,Visual C++,Windows 7 X64,Windows Nt,我试图将Visual C++ 6程序(最初在Windows NT机器上写入)到Visual C++ 2010,以用于我的64位Windows 7 PC。程序编译得很好,但是运行时断言失败,导致调试器中的下列输出: OLE控件的协同创建实例{F9043C85-F6F2-101A-A3C9-08002B2F49FB} 失败了 结果代码:0x80040154 控件是否正确注册 警告:资源项和Win32 Z顺序列表不同步。标签 顺序可能没有很好的定义 警告:CreateDlgControl在对话框初始化
ASSERT(IsWindow(pTemp->m_hWnd));
据我了解,Microsoft Common Dialog Control v6.0可能未注册。我用Regsrv32.exe注册了它并重新启动了windows,但错误仍然存在
我的目标是判断这个旧程序是否可以与新工具一起工作——而不是实际重写旧程序(尽管这将在稍后进行)。可以让旧程序在我的新机器上运行吗
编辑:添加导致断言失败的代码
BOOL CCameraSimulationApp::InitInstance()
{
AfxEnableControlContainer();
#ifdef _AFXDLL
Enable3dControls(); // Call this when using MFC in a shared DLL
#else
Enable3dControlsStatic(); // Call this when linking to MFC statically
#endif
INITCOMMONCONTROLSEX InitCtrlEx;
InitCtrlEx.dwSize = sizeof(INITCOMMONCONTROLSEX);
InitCtrlEx.dwICC = ICC_PROGRESS_CLASS;
if (!InitCommonControlsEx(&InitCtrlEx))
{
printf("Common Controls failed to initialize");//debug
}
CCameraSimulationDlg dlg;
m_pMainWnd = &dlg;
int nResponse = dlg.DoModal();
…
是0x80040154
。这意味着该类尚未注册REGDB\u E\u CLASSNOTREG
是常用的对话框控件{F9043C85-F6F2-101A-A3C9-08002B2F49FB}
我还要说的是,你没有必要重新编译这个程序。首先,我将集中精力让您现有的可执行文件在新机器上工作。我没有否决票,但如果您能找到并粘贴最终导致断言失败的代码,那就太好了,否则这个问题很难回答。另外,您是否调用此:?@SirDarius
CDialog::DoModal()
导致断言。我尝试了你的建议,函数返回true,这使我相信问题实际上不是ActiveX控件,而是我自己的代码。嗯。。。附带说明:这与ActiveX无关。我实际上是在尝试运行一个64位程序,因为它依赖于一些同样是64位的matlab DLL。无论如何,我已经尝试在提升时注册C:\Windows\SysWOW64\ComDlg32.ocx
和C:\Windows\System32\ComDlg32.ocx
,但我仍然看到相同的断言。我想完全重写控件,但不幸的是,这超出了我在这里可以做的范围。另外,旧的可执行文件在新机器上工作正常。如果旧的可执行文件工作正常,那么该控件可能已注册。在这种情况下,问题似乎在于您的代码以及如何编译代码。缺少详细信息。断言失败似乎是由函数调用引起的。这是否有用,或者我是否应该提供其他有助于描述情况的细节?我为我在这里的简短评论表示歉意,这是我第一次使用C++ GUI程序。为什么不做一些调试呢?如果您真的刚刚开始GUI编程,那么您将有一个陡峭的学习曲线。首先,您需要了解您的程序的功能。