として奇妙なエラーが発生していAssert Failed
f:\dd\...\include\afxwin1.inl
ます。私はGoogleでいくつかの解決策を検索しています。いくつかの解決策はm_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
、リリースモードでこの行( )をコメントして機能させるためのものです。しかし、その行にコメントした後、さらにエラーが発生しています。
ダイアログベースの MFC アプリケーションを使用しました。のときはまったく問題なく動作していましたapplication.exe
。私の要件はそれを作ることであり、私はメインになるstatic library
別のものを持っています。私はそれから電話しています。線が引けたら、console application
application.exe
InitInstance
.exe
CDialogDlg::CDialogDlg(CWnd* pParent /*=NULL*/)
: CDialogEx(CDialogDlg::IDD, pParent)
{
m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
}
上記のエラーがスローされます。
私の中でapplication.cpp
#include "stdafx.h"
#include "DialogDlg.h"
#include "Dialog.h"
#include "afxwin.h"
#include "Resource.h"
#include <afxinet.h>
CDialogApp theApp;
int _tmain(int argc, _TCHAR* argv[])
{
//CInitApp cpp;
theApp.InitInstance();
return 0;
}
Dialog.cpp
#include "stdafx.h"
#include "Dialog.h"
#include "DialogDlg.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#endif
// CDialogApp
BEGIN_MESSAGE_MAP(CDialogApp, CWinApp)
ON_COMMAND(ID_HELP, &CWinApp::OnHelp)
END_MESSAGE_MAP()
// CDialogApp construction
CDialogApp::CDialogApp()
{
m_dwRestartManagerSupportFlags = AFX_RESTART_MANAGER_SUPPORT_RESTART;
}
//CDialogApp theApp;// I have commented this code as I am declaring it in mainapplication
BOOL CDialogApp::InitInstance()
{
INITCOMMONCONTROLSEX InitCtrls;
InitCtrls.dwSize = sizeof(InitCtrls);
InitCtrls.dwICC = ICC_WIN95_CLASSES;
InitCommonControlsEx(&InitCtrls);
CWinApp::InitInstance();
AfxEnableControlContainer();
CShellManager *pShellManager = new CShellManager;
//SetRegistryKey(_T("Local AppWizard-Generated Applications"));
CDialogDlg dlg;
m_pMainWnd = &dlg;
INT_PTR nResponse = dlg.DoModal();
if (nResponse == IDOK)
{
}
else if (nResponse == IDCANCEL)
{
}
if (pShellManager != NULL)
{
delete pShellManager;
}
return FALSE;
}
私はそれを呼び出しているので、CDialogApp theApp;
行にコメントを付けました。このエラーを解決する方法を教えてください。Dialog.cpp
mainapplication .exe
CDialogDlg dlg;
他の方法では、ダイアログ ベースのアプリケーションを静的ライブラリとして設定することができます。はいの場合、なぜこのエラーが発生するのですか。メイン アプリケーションを Windows とコンソール ベースでも作成してみました。私が何をしようとしているのか、よりよく理解するためにスクリーンショットを見つけてください。