У меня есть проект ATL COM, который я хочу портировать на 64-битный.
После изменения платформы на x64 и запуска сборки я получаю среди других ошибок следующее
ATL::CComContainedObject<contained>: C2259 Cannot instantiate abstract classв atlcom.h
ATL::CComContainedObject<contained>: C2259 Cannot instantiate abstract class
я также получаю эту ошибку
C2338 CAtlDllModuleT<T> must be used with either _WINDLL or _USRDLL в atlbase.h
C2338 CAtlDllModuleT<T> must be used with either _WINDLL or _USRDLL
Он прекрасно компилируется на 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
Как и в комментариях выше, корень проблемы был в настройках файла проекта Visual Studio 64bit.Многие важные параметры не были установлены правильно.После обновления 64-битного профиля в соответствии с 32-битным профилем он был построен без ошибок.