Неразрешенный внешний символ ... QueryInterface - PullRequest
2 голосов
/ 17 июля 2009

У меня есть неуправляемый класс C ++, внутри которого есть com-карта. EX:

BEGIN_COM_MAP
(MyClass)
  COM_INTERFACE_ENTRY(...)
END_COM_MAP

Но теперь изнутри класса, если я пытаюсь вызвать this-> QueryInterface, я получаю следующую ошибку:

unresolved external symbol "public: virtual long __stdcall CTest::QueryInterface(struct _GUID const &,void * *)" (?QueryInterface@CTest@@UAGJABU_GUID@@PAPAX@Z) referenced in function "public: __thiscall CTest::CTest(void)" (??0CTest@@QAE@XZ)

Но теперь, если я пытаюсь реализовать метод QueryInterface, я получаю следующую ошибку:

error C2535: 'HRESULT CTest::QueryInterface(const IID &,void **) throw()' : member function already defined or declared

Что я делаю не так?

Ответы [ 2 ]

1 голос
/ 17 июля 2009

Спасибо за ответы, но проблема, в конце концов, в том, что я пытался QueryInterface из конструктора. Как только я переместил его в отдельный метод, все заработало нормально.

У кого-нибудь есть документы, почему вы не можете вызвать QueryInterface из конструктора?

0 голосов
/ 17 июля 2009

Проблема в том, что вы неправильно связываетесь с файлами библиотеки ATL. Проверьте параметры проекта в Visual Studio и убедитесь, что вы статически связываетесь с ATL.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...