#visual-c #linker #activex #firebreath #typelib
#visual-c #компоновщик #activex #firebreath #typelib
Вопрос:
Я работаю над проектом FireBreath, который создает приложение-плагин, которое обертывает функции элемента управления ActiveX. У меня даже есть исходный код элемента управления ActiveX.
На основе примера, приведенного на странице примера FireBreath, я закодировал необходимый класс-оболочку для переноса активных элементов управления X.
Для вызова интерфейсов событий, классов и функций элемента управления activex из проекта firebreath программа, которую я загрузил со страницы примера firebreath, использует оператор, подобный этому, чтобы предоставить информацию о типе элементов управления activex проекту
// Import the ActiveX control's typelib so we can easily call methods, etc.
// on the ActiveX control.
#import "PROGID:FBExampleCtl.xpcmdbutton" no_namespace, raw_interfaces_only$
Но когда я использую что-то подобное в своей программе, выдается сообщение об ошибке не удается найти библиотеку типов, включенную в заголовок.
Поэтому я не могу понять, как предоставить библиотеку типов элемента управления activex моему проекту, а также использовать методы и функции, определенные в библиотеке типов из моей программы.
ps: 1) Я также установил Oleview, чтобы проверить, доступна ли библиотека типов в системе. Из этого я также попробовал альтернативу, например
#import "GUID of the typelibrary". But this also didnot work.
2) я также пытался
#import "myrequireddll.dll"
а также упомянул путь к dll в среде отладки. Но компилятор по-прежнему выдает ту же ошибку, не удается найти файл.
Комментарии:
1. Всегда предпочитайте использовать имя файла напрямую, а не надеяться, что компилятор сможет найти его через реестр. Укажите файл .tlb, если он у вас есть отдельно, или DLL, в которую он встроен.
2. @Hans Passant я тоже пробовал этот метод. Но, я думаю, это не сработало. Пожалуйста, проверьте второй пункт, который я добавил в конце вопроса
Ответ №1:
Вы можете импортировать файл TLB непосредственно в файл заголовка (.h), используя следующую директиву #IMPORT
#import "C:<PATH_TO_YOUR_TLB_FILE>.tlb" no_namespace, raw_interfaces_only
Ответ №2:
Ознакомьтесь с этим сообщением в моем блоге Настройка Visual Studio 2010 для программирования MASM32. В нем говорится о настройке для MASM32, однако показано, как добавлять сторонние библиотеки типов и включать файлы в ваш проект.