Я переношу свое исполняемое приложение C++ ATL с VS2003 на VS2013.Миграция C++ ATL Исполняемое приложение от VS2003 до VS2013
В VS 2003
класс CExeModule: общественный CComModule
В VS2013 (его было изменено)
класс CExeModule: общественный ATL :: CAtlExeModuleT < CExeModule>
Я успешно мигрировали проект, во время компиляции я столкнулся проблема с
**
ошибка C2664: 'ATL :: CHandle :: CHandle (HANDLE) бросок()': не может преобразовать аргумент 1 из 'BOOL' в 'ATL :: CHandle &'
**
Я не получаю эту ошибку, если я закомментировать следующий код
_AtlModule.WinMain (nShowCmd);
Может помочь решить эту проблему?
Дополнительная информация
C: \ Program Files \ Microsoft Visual Studio 12.0 \ VC \ atlmfc \ Include \ atlbase.h (3628): ошибка C2664: «ATL :: CHandle :: CHandle (HANDLE) throw() ': невозможно преобразовать аргумент 1 из' bool 'в' ATL :: CHandle & 'C: \ Program Files \ Microsoft Visual Studio 12.0 \ VC \ atlmfc \ include \ atlbase.h (3608): while компиляция класса шаблон член функции 'HRESULT ATL :: CAtlExeModuleT :: PreMessageLoop (int) throw()' C: \ Program Files \ Microsoft Visual Studio 12,0 \ VC \ atlmfc \ включать \ atlbase.h (3695): см ссылку на шаблон функции экземпляра 'HRESULT ATL :: CAtlExeModuleT :: PreMessageLoop (интермедиат) броска()' будучи скомпилирован
stdafx.h (107): см ссылку на шаблон класса экземпляра «ATL :: CAtlExeModuleT» компилируется
Я полагаю, проблема в вашем 'CExeModule :: PreMessageLoop', который вы не показываете. –
У меня нет никакого PreMessageLoop в моем коде ... вот где я удивлен ... –
Что-то еще тогда вмешивается (некоторый заголовок включен в stdafx.h или где и где). Вы можете создать чистый проект ATL EXE в VS2013, чтобы убедиться, что он создан, и, как известно, он отлично подходит для построения.Линия с WinMain включает цепочку вызовов в этом классе, которая в итоге попадает в столкновение. Я не думаю, что эта линия плоха сама по себе (хорошо выглядит). –