-
December 16th, 2021, 04:33 PM
#1
Occcont.cpp error when migrating old VS2005 application to Visual Studio
I am updating an application originally built in 2007 with Visual Studio 2022. I've made a few minor changes to get the program to compile successfully, but when I run the program it generates an assertion error on the DoModal() call:
Code:
CGenisysInteractApp theApp;
/////////////////////////////////////////////////////////////////////////////
// CGenisysInteractApp initialization
BOOL CGenisysInteractApp::InitInstance()
{
AfxEnableControlContainer();
// Standard initialization
// If you are not using these features and wish to reduce the size
// of your final executable, you should remove from the following
// the specific initialization routines you do not need.
#ifdef _AFXDLL
//Enable3dControls(); // Call this when using MFC in a shared DLL
#else
Enable3dControlsStatic(); // Call this when linking to MFC statically
#endif
//Background color test
SetDialogBkColor(RGB(192,192,192), RGB(0,0,0));
CGenisysInteractDlg dlg;
m_pMainWnd = &dlg;
int nResponse = dlg.DoModal();
The assertion error generated is as follows:
Code:
Debug assertion failed!
Program C:\WINDOWS\SYSTEM32\mfc140d.dll
File:
d:\a01\_work\3\s\src\vctools\VC7Libs\ATLMFC\Src\MFC\occcont.cpp
Line: 925
I wanted to see what was happening in occcont.cpp to generate this error, and then I immediately recognized that I don't have ANY files on a path of d:\ on this computer. I'm assuming this was the path to the old directory on my old PC. So when I perform a search for the file, I located occcont.cpp in a different directory in C:\Program Files\Microsoft Visual Studio\2022\. So now I'm confused as to where to go next. I set a breakpoint in occcont.cpp at line 925 which never gets called:
Code:
921 OleControlSiteOrWnd *pTemp =
922 new COleControlSiteOrWnd(
923 hwndCtrl,
924 pOccDlgInfo->m_pItemInfo[i].bAutoRadioButton);
925 ASSERT(IsWindow(pTemp->m_hWnd));
So question - why is VS2022 looking for this file in a directory that doesn't exist? It seems to be finding the file, or else it wouldn't have made it to line 925, right? What is this assertion error telling me?
-
December 17th, 2021, 04:37 AM
#2
Re: Occcont.cpp error when migrating old VS2005 application to Visual Studio
I suggest you create a new solution/project in VS2022 and add the required .cpp/.h et al files, set this solution/project properties as required and then compile. You shouldn't then have any reference to d:.
All advice is offered in good faith only. All my code is tested (unless stated explicitly otherwise) with the latest version of Microsoft Visual Studio (using the supported features of the latest standard) and is offered as examples only - not as production quality. I cannot offer advice regarding any other c/c++ compiler/IDE or incompatibilities with VS. You are ultimately responsible for the effects of your programs and the integrity of the machines they run on. Anything I post, code snippets, advice, etc is licensed as Public Domain https://creativecommons.org/publicdomain/zero/1.0/ and can be used without reference or acknowledgement. Also note that I only provide advice and guidance via the forums - and not via private messages!
C++23 Compiler: Microsoft VS2022 (17.6.5)
-
December 18th, 2021, 07:50 AM
#3
Re: Occcont.cpp error when migrating old VS2005 application to Visual Studio
why is VS2022 looking for this file in a directory that doesn't exist? It seems to be finding the file, or else it wouldn't have made it to line 925, right? What is this assertion error telling me?
I guess it is a design flaw of the Microsoft MFC team: rather than show the real path on the user machine they output the path of the file stored on some their developer machine.
The same was in VS 2015/2017/2019
Victor Nijegorodov
Posting Permissions
- You may not post new threads
- You may not post replies
- You may not post attachments
- You may not edit your posts
-
Forum Rules
|
Click Here to Expand Forum to Full Width
|