ATL :: CComContainedObject <contained>: C2259 Невозможно создать экземпляр абстрактного класса - PullRequest
0 голосов
/ 09 октября 2018

У меня есть проект ATL COM, который я хочу портировать на 64-битный.

После изменения платформы на x64 и запуска сборки я получаю среди других ошибок следующее

ATL::CComContainedObject<contained>: C2259 Cannot instantiate abstract classв atlcom.h

я также получаю эту ошибку

C2338 CAtlDllModuleT<T> must be used with either _WINDLL or _USRDLL в atlbase.h

Он прекрасно компилируется на 32-битной.У кого-нибудь есть идеи как это решить?Я нашел этот похожий вопрос и ответ, но я не могу понять, как применить его в моем случае.

https://social.msdn.microsoft.com/Forums/vstudio/en-US/d6144eaa-fa37-4133-87a0-75a06633209b/compiling-64bit-results-in-a-2259-cannot-instantiate-abstract-class?forum=vclanguage

Ранее я уже публиковал аналогичный более широкий вопрос:

ATL COM 32-битные dll и 64-битные не-COM dll

1 Ответ

0 голосов
/ 11 октября 2018

Как и в комментариях выше, корень проблемы был в настройках файла проекта Visual Studio 64bit.Многие важные параметры не были установлены правильно.После обновления 64-битного профиля в соответствии с 32-битным профилем он был построен без ошибок.

...