AfxGetInstanceHandle () вызывает ошибку подтверждения - PullRequest
10 голосов
/ 02 марта 2011

Я использую MFC в моей программе на C ++ (с использованием Visual Studio 2008). Я должен вызвать AfxGetInstanceHandle () в начале моей программы.

Эта функция вызывает точку останова:

AFXWIN_INLINE HINSTANCE AFXAPI AfxGetInstanceHandle()
{ ASSERT(afxCurrentInstanceHandle != NULL);
return afxCurrentInstanceHandle; }

Оператор ASSERT не выполнен. Есть ли что-то особенное, что нужно сделать, чтобы инициализировать afxCurrentInstanceHandle, прежде чем мы попытаемся получить к нему доступ?

PS: я использую MFC в общей DLL.

EDIT

Мой код такой:

int _tmain(int argc, _TCHAR* argv[])
{

  CoInitialize(NULL);
  AfxGetInstanceHandle();
  return 0;
}

Я хотел бы использовать InstanceHandle для инициализации CComModule, а затем использовать его для манипулирования com-объектом.

Ответы [ 4 ]

12 голосов
/ 27 июня 2013

Я сделал консольное приложение с MFC и тоже получил сообщение. Я нашел решение, что вам нужен «пролог» в начале вашего основного (_tmain и т. Д.).

int main(int args, char* argv[]) //, char *envp[])
{
    // initialize MFC and print and error on failure
    if (!AfxWinInit(::GetModuleHandle(NULL), NULL, ::GetCommandLine(), 0))  
    {       
        // TODO: change error code to suit your needs       
        cerr << _T("Fatal Error: MFC initialization failed") << endl;       
        return 1;   
    }   
    AfxGetInstanceHandle();
    // TODO: code your application's behavior here.
    ...
8 голосов
/ 07 апреля 2011

Использование:

AFX_MANAGE_STATE(AfxGetStaticModuleState());

Перед звонком:

AfxGetInstanceHandle();
5 голосов
/ 02 марта 2011

Это может произойти, если вы смешиваете юникод / ​​mbcs или режимы отладки / выпуска для DLL / приложения.

2 голосов
/ 02 марта 2011

Если вы используете MFC, вы не должны предоставлять main, wmain, _tmain или WinMain - MFC предоставляет собственную точку входа.Поместите код инициализации в InitInstance вашего производного класса CWinApp.Если у вас нет производного класса CWinApp, вы не создали проект правильно - используйте мастера Visual Studio для создания приложения MFC.

...