Пишу расширение для Explorera.
Есть у меня такой (уже не новый, но тем не менее) вопрос.
Что это за ошибки?
error C2787: 'IContextMenu' : no GUID has been associated with this object
error C2440: 'initializing' : cannot convert from 'DWORD_PTR' to 'const IID *'
error C2440: 'initializing' : cannot convert from 'ATL::_ATL_CREATORARGFUNC (__stdcall *)' to 'DWORD_PTR'
Почему в VC 6.0 их нет,а в VC, который в MS VS .NET 2003 они естть?
ошибка вылезает при добавлении этого интерфейса IContextMenu в карту интерфейсов
по настоятельному совету многих закачал себе 30 апреля 2004 года (это к вопролсу о версиях) Platform SDK. Поставил, все что нужно и ничего не изменилось.
ВОПРОС 2. Мог бы кто-нибудт объяснить, как связаны заголовочные файлы в директории VC++, то есть в
%Program Files%\Microsoft Visual Studio .NET 2003\Vc7\PlatformSDK\Include с теми, что в
%Program Files%\Microsoft SDK\include\
Вроде бы в первой всего больше и весит она около 50 МБ, тогда как вторая где-то 37 МБ, по моему
Проще говоря, можно ли теперь, поставив SDK забить на все файлы (SDK) из стандартной поставки студии или нет?
Спасибо, ну и конечно, не забудьте про первый вопрос
Здравствуйте, Аноним, Вы писали:
А>по настоятельному совету многих закачал себе 30 апреля 2004 года (это к вопролсу о версиях) Platform SDK. Поставил, все что нужно и ничего не изменилось.
в настройках студии, где прописаны include, bin, lib -каталоги, пути к Platform SDK поставлены выше родных каталогов студии?
Здравствуйте, Odi$$ey, Вы писали:
OE>Здравствуйте, Аноним, Вы писали:
А>>по настоятельному совету многих закачал себе 30 апреля 2004 года (это к вопролсу о версиях) Platform SDK. Поставил, все что нужно и ничего не изменилось.
OE>в настройках студии, где прописаны include, bin, lib -каталоги, пути к Platform SDK поставлены выше родных каталогов студии?
привет, это я топик запостил — я теперь залогинился.
Да, все прописал, в смысле include, lib, source но все равно ничего не выходит.
Порывшись по заголовочным файлам можно вполне согласиться с компилятьором — GUIDа у этого интерфейса действительно чтто-то не видать
Здравствуйте, kaas, Вы писали:
OE>>в настройках студии, где прописаны include, bin, lib -каталоги, пути к Platform SDK поставлены выше родных каталогов студии?
K>Да, все прописал, в смысле include, lib, source но все равно ничего не выходит.
прописал выше всех остальных include?
K>Порывшись по заголовочным файлам можно вполне согласиться с компилятьором — GUIDа у этого интерфейса действительно чтто-то не видать
К стати, я эту строку, ту, что выше — просто скопировал в свой заголовочный файл, там где объявлен мой COM-объект.
Скопмилился за милую душу.
Ну стало конечно интересно, в чем дело. Короче все эти uuid в файлике comdef.h имеют место только при следующем условии:
Но что это за _COM_NO_STANDARD_GUIDS_ было бы очень интересно узнать
Странно только, что в шестой версии все без проблем. А вообще почти все поисковики, типа Google, Yahoo, Altavista, даже Codeguru и Microsoft на вопрос "_COM_NO_STANDARD_GUIDS_" — отвечают однозначно: "Sorry, no results were found."
Намутили они там что-то...
Здравствуйте, kaas, Вы писали:
K>Да, правда, а я его искал в shlobj.h K>К стати, я эту строку, ту, что выше — просто скопировал в свой заголовочный файл, там где объявлен мой COM-объект. K>Скопмилился за милую душу.
а
#include <comdef.h>
не пробовал ?
K>Ну стало конечно интересно, в чем дело. Короче все эти uuid в файлике comdef.h имеют место только при следующем условии:
K>#if !defined(_COM_NO_STANDARD_GUIDS_) K>...... K>struct __declspec(uuid("000214e4-0000-0000-c000-000000000046")) IContextMenu; K>...
K>Но что это за _COM_NO_STANDARD_GUIDS_ было бы очень интересно узнать
ну типа не нужны тебе все эти IContextMenu, пишешь
конечно пробовал — так и сделал. Я просто сообщение редактировал и стер пару строк. Но фишка видети ли в том, что....Я теперь уже похоже перестаю понимать основы см далее.
OE>ну типа не нужны тебе все эти IContextMenu, пишешь
OE>
OE>#define _COM_NO_STANDARD_GUIDS_
OE>
OE>и ничего не видишь
если ты это про себя (что ты ничего не увидел), — то ты счастливый человек, коли действительно закомпилил такой проект. Я все же еще объясню, почему я не понимаю основ.
эта зверская запись по моему говорит о том, что у нас имеются uuid интерфейсов, если НЕ определен _COM_NO_STANDARD_GUIDS_, там ведь #if !defined...
Ну то есть его надо наоборот разопределить. Я уже по всякому пробовал. Вот два варианта, исчерпывающих ситуацию (или один или другой):
K>эта зверская запись по моему говорит о том, что у нас имеются uuid интерфейсов, если НЕ определен _COM_NO_STANDARD_GUIDS_, там ведь #if !defined... K>Ну то есть его надо наоборот разопределить.
— компилится на 7.1 влет, без единого писка насчет IContextMenu
Читал я эти статьи еще на www.CodeProject.net. Это как раз такой проект, который компилится у меня в лет только на версии 6.
В общем, я уверен, что никаких косяков с инсталляцией студии у меня не было. Следовательно причина ошибки кроется по-моему где-то в исходных файлах SDK. Но так как проект все же можно с горем пополам закомпилить и с учетом этих косяков- можно считать, что тема закрыта
Спасибо за помощь.
Здравствуйте, kaas, Вы писали:
K>В общем, я уверен, что никаких косяков с инсталляцией студии у меня не было. Следовательно причина ошибки кроется по-моему где-то в исходных файлах SDK. Но так как проект все же можно с горем пополам закомпилить и с учетом этих косяков- можно считать, что тема закрыта
чтоб уж я тоже окончательно успокоился , можешь показать как у тебя выглядит вот это окошко:
А>Что это за ошибки? А>error C2787: 'IContextMenu' : no GUID has been associated with this object А>error C2440: 'initializing' : cannot convert from 'DWORD_PTR' to 'const IID *' А>error C2440: 'initializing' : cannot convert from 'ATL::_ATL_CREATORARGFUNC (__stdcall *)' to 'DWORD_PTR' А>Почему в VC 6.0 их нет,а в VC, который в MS VS .NET 2003 они естть? А>ошибка вылезает при добавлении этого интерфейса IContextMenu в карту интерфейсов А>по настоятельному совету многих закачал себе 30 апреля 2004 года (это к вопролсу о версиях) Platform SDK. Поставил, все что нужно и ничего не изменилось.
OE>>в настройках студии, где прописаны include, bin, lib -каталоги, пути к Platform SDK поставлены выше родных каталогов студии?
K>В общем, я уверен, что никаких косяков с инсталляцией студии у меня не было. Следовательно причина ошибки кроется по-моему где-то в исходных файлах SDK. Но так как проект все же можно с горем пополам закомпилить и с учетом этих косяков- можно считать, что тема закрыта
OE>чтоб уж я тоже окончательно успокоился , можешь показать как у тебя выглядит вот это окошко:
K>>Спасибо за помощь.
Короче это... Оказывается comdef.h лежит изначально не в
VC7\PlatformSDK\Include, а в
VC7\Include. А у меня эта папка выше была, чем MicrodoftSDK — не хотел нарушать порядок, оказалось что зря...