Я пытаюсь исправить / обновить DLL VLC ActiveX, но у меня проблемы с отображением новых методов.
Сами методы легко написать и они просто на языке c / c ++, однако где-то в проекте / dll есть клей, который транслирует вызов между методом в DLL и «понятным именем», предоставляемым dll activex.
Например, у него уже есть метод VLCMediaDescription :: get_title, однако при доступе к нему через интерфейс activex это vlc_object.mediaDescription.title.
Я не вижу в файле .idl ничего такого, что могло бы сделать это.
Кто-нибудь может дать мне подсказку, где делать перевод?
FWIW, это Visual Studio 2012.
Я пытался использовать мастер, но, похоже, он довольно сильно зависал и ничего полезного не дал.
«Объясни мне, что мне 5 лет», было бы здорово.
Спасибо!
Терри
Это было какое-то время, но если память обслуживает файл idl, это должно быть то, что создает библиотеку типов, которая определяет методы и свойства и назначает DISPID каждому. Реализация IDispatch (или IDispatchEx) должна быть тем местом, где вы действительно делаете что-либо в ответ на DISPID, которые определены в файле idl. Я думаю АТЛ делает некоторую магию с помощью typelib, например, автоматический поиск и отправку в get_ * и put_ * или что-то еще. В противном случае в вашей реализации IDispatch вы можете выполнять поиск в typelib. Смотрите автоматизацию ссылка для документирования функций.
Других решений пока нет …