Active X
Но при запуске этих прог на чужих компах с подобной железячкой и с нормальной работой других прог под эту железячку(написанных в частности на Centura) ) выдается сообщение :
HRCHECK:
src->QueryInterface(GetIID(),(LPVOID*)(&inf))': No such interface supported @ e:\program files\borland\cbuilder6\include\vcl\utilcls.h/3002 Press[Y]es to terminate [N]o to continue and [C]ancel to Debug
Причем на этих компах билдер не установлен (в сообщении указывается м о й путь).Компиляю релиз я как обычно : без runtime-packages и без dinamic RTL.
В чем дело? Помогите пожалуйста.
Здравствуйте,у меня возникла специфичная проблема... Вобщем есть одна PCI-железячка (которая накладывает титры на видеовыход),есть под нее софт и пр. Я импортнул соответствующий файл tlb в среду C++ Builder 6 и написал кой-какие программки ,которые отлично шпилят.
Но при запуске этих прог на чужих компах с подобной железячкой и с нормальной работой других прог под эту железячку(написанных в частности на Centura) ) выдается сообщение :
HRCHECK:
src->QueryInterface(GetIID(),(LPVOID*)(&inf))': No such interface supported @ e:\program files\borland\cbuilder6\include\vcl\utilcls.h/3002 Press[Y]es to terminate [N]o to continue and [C]ancel to Debug
Причем на этих компах билдер не установлен (в сообщении указывается м о й путь).Компиляю релиз я как обычно : без runtime-packages и без dinamic RTL.
В чем дело? Помогите пожалуйста.
Значит QueryInterface(...) вернула E_NOINTERFACE т.е. твой ActivX там не зарегестрирован.
На "на чужом компе ":
regsvr32.exe -Путь\Твой.ocx
Спасибо.Мне это уже подсказали сделать.Теперь возник вопрос,где достать данную OCX ?. У меня с железякой поставлялись только TLB и ODL... До разработчика я пока достучаться не могу :(
Может еще чего посоветуешь?
2GIZMO:
Спасибо.Мне это уже подсказали сделать.Теперь возник вопрос,где достать данную OCX ?. У меня с железякой поставлялись только TLB и ODL... До разработчика я пока достучаться не могу :(
Может еще чего посоветуешь?
ocx можно сделать самому имея tlb.
ocx можно сделать самому имея tlb.
Шутите Александр?
2GIZMO:
Спасибо.Мне это уже подсказали сделать.Теперь возник вопрос,где достать данную OCX ?. У меня с железякой поставлялись только TLB и ODL... До разработчика я пока достучаться не могу :(
Может еще чего посоветуешь?
Она находится на компе, где: - "...есть одна PCI-железячка (которая накладывает титры на видеовыход),есть под нее софт и пр." Сам по себе tlb это просто описание типов (этакий хедер для ocx), и без ocx-а работать не может. Tlb Ты импортнул, так? Теперь смотри в файле YourIron_TLB.cpp LIBID_YourIron = {...}, переобразуй его к "нормальному виду". Пример:
const GUID LIBID_AddInDesignerObjects = {0xAC0714F2, 0x3D04, 0x11D1,{ 0xAE, 0x7D, 0x00, 0xA0, 0xC9, 0x0F, 0x26, 0xF4} };
"норм вид" = {AC0714F2-3D04-11D1-AE7D-00A0C90F26F4}.
Далее запуксаешь RegEdit|Поиск|"LIBID_YourIron"(напр. {AC0714F2-3D04-11D1-AE7D-00A0C90F26F4})|Ок. Находишь раздел с таким именем("LIBID_YourIron"), смотришь подраздел InprocServer32 параметр по умолчанию и есть твой ActiveX(это не обязательно ocx? м.б. и dll). Несешь на др. комп. и regserv32 - ...
ocx можно сделать самому имея tlb.
Шутите Александр?
Насколько я не понимаю, TLB это описание типов, которые содежатся в ActiveX библиотеке, и как из этого описания достать непосредственно исполняемый код?
Может там с железякой DLL'и были, их тоже можно зарегистрировать regsvr32.exe.
Пока писал текст, меня опередил, товарищ GIZMO :)
Шутите Александр?
Да нет. Просто есть у меня такая дурная привычка опускать промежуточные выводы, подразумеваяя, что остальные почему то умеют читать мои мысли.;) Каюсь. Идея была такая, что собрать необходмое можно и в Билдере, раз уж оно там работает.:angel:
я решил эту проблему регистрацией на сторонних компах непосредственно самой tlb-хи ...