Visual Studio: не удается добавить класс ATL в проект ATL? - PullRequest
0 голосов
/ 13 декабря 2011

Итак, я создаю проект ATL в Visual Studio 2008 с помощью мастера (рекомендуется здесь - Как создать ActiveX DLL в Visual C ++ - и в других местах)

Но я могуне добавлять какие-либо классы в мой проект.VS возвращает следующую ошибку:

atl classes can only be added to mfc exe and mfc regular dll projects or projects with full atl support

... последняя из которых, как вы думаете, могла бы иметь проект atl, верно?

Может кто-нибудь предложить исправление?

(я пытался пометить и убрать галочку «Поддержка COM + 1.0» при создании проекта - я не совсем уверен, что делать с этой опцией).

Ответы [ 4 ]

2 голосов
/ 06 декабря 2017

Добавить "новый элемент ..." вместо Добавить "класс ...".Затем вы можете выбрать один из вариантов ATL.

0 голосов
/ 06 апреля 2019

Если вы не создали проект как «ATL Project». Убедитесь, что atlbase.h включен в stdafx.h Добавьте файл .cpp (любое имя) в свой проект со следующим кодом:

// ATLMod.cpp 
/* This is all that is needed to satisfy VS full ATL support requirement
   when adding  ATL items with the wizards.
   Just has to be present in the project.  Compilation not required.
   Can set "Exclude from build" property to Yes.
*/

#include "stdafx.h"

// ATLMod.h : Declaration of copy of DllMain.h
class CATLProject1Module : public ATL::CAtlDllModuleT< CATLProject1Module >
{
public:
} _AtlModule;
0 голосов
/ 19 декабря 2011

Я обнаружил эту тему в MSDN и перепробовал все предложенные решения.Единственное, что сработало, - это идентификация 'isAtlProject()' в javascript и установка для возврата true.Это привело меня к следующему диалогу.

Однако, создав класс, мастер «Add Method» затем молча не смог бы добавить весь необходимый код в файлы интерфейса, заголовка и cpp.Я сделал другой поток об этом.Выяснилось, что причиной последней ошибки было то, что intellisense был отключен вручную (подробности см. В другой ветке): - для тех, кто читает это в будущем с такой же проблемой, если вы сначала исправите intellisense, может быть, вам не придется печатать javascript?Попробуй хотя бы!

0 голосов
/ 13 декабря 2011

Интересно, что ваша ссылка: «Как создать ActiveX DLL в Visual C ++» не содержит никакой информации о создании проекта ATL:)

В любом случае: Файл - Новый - Проект - ATL - Проект ATL - Далее - Далее - Готово. Проект ATL готов.

Проект - Добавить класс - ATL - Простой объект ATL - Добавить - Заполнить имя класса - Готово. Добавлен класс ATL.

...