Разное - помогите: как использовать COM-технологию?

Аватара пользователя
Admiral

Re: Разное - помогите: как использовать COM-технологию?

Сообщение Admiral »

Цитата ivank:



Зарегистрируйте эти dll в системе и посмотрите, нет ли в них typelib'ов внутри. С помощью тулзы вроде этой:
http://www.aivosto.com/activexplorer.html
Разное - помогите: как использовать COM-технологию?




К сожалению, зарегить не получается, а внешних tlb файлов к ним не прилагается. regsvr32 выдаёт следующую ошибку:


Цитата:



LoadLibrary("111.dll") failed - The specified module could not be fount.



Значит ли это, что в данном файле находится com-компонент или, наоборот, не находится? Так, например, для всех прочих dll-файлов выдаёт отличное сообщение:


Цитата:



cw.dll was loaded, but the DllRegisterServer entry point was not found. This file can not be registered.



АctiveXplorer их не открывает. Как можно узнать, какие объекты находятся в dll-файле (нужны их имена для вызова в случае, если удастся зарегить)?



Вообще, всегда ненавидел подобные майкрософтские задрючки, но производители девайса вдруг посчитали, что com-технология проще в использовании, чем обычные dll-ки. Теперь вот приходится разбираться что к чему.
Аватара пользователя
zl3p

Re: Разное - помогите: как использовать COM-технологию?

Сообщение zl3p »

Ситуация немного изменилась. Нашелся dll-файл, который был зарегин в системе и com-объект был подключён, однако для работы железа этого оказалось недостаточно (object выдаёт неизвестную ошибку).

Поэтому вопрос, может кто знает, как по бинарному содержимому файла dll определить, какие ещё дополнительные dll-библиотеки (с дровами) нужны для нормальной его работы и в какой каталог эти библиотеки надо закидывать. Пишу эти идиотские вопросы, потому что ранее с dll дела не имел и не собирался иметь, даже не знаю, для чего они нужны. -)
Аватара пользователя
vampirqueen

Re: Разное - помогите: как использовать COM-технологию?

Сообщение vampirqueen »

Но хачу вам всем сказать что эти функций этой програмы можит быть недаступна Изображение смотря какая у вас система на компе, чтобы С++ но я делал через прогу Autoit3 Я писал сам скрипт что бы он выполнял команды. вот и всё
Аватара пользователя
ivank

Re: Разное - помогите: как использовать COM-технологию?

Сообщение ivank »

zl3p, Зависимости dll можно посмотреть с помощью PE Explorer или
подобных программ
. Но это не спасёт, если ддка подгружается динамически (чего, правда как правило не делают). И в случае зависимостей от дров тоже не поможет: драйверы (настоящие - системные) используются с помощью посредника в виде апи операционной системы, которое в системе присутствует всегда, но железку тем не менее вполне может не видеть.




Цитата zl3p:



Нашелся dll-файл, который был зарегин в системе и com-объект был подключён, однако для работы железа этого оказалось недостаточно (object выдаёт неизвестную ошибку).
Разное - помогите: как использовать COM-технологию?




В какой момент? В момент создания ком-объекта, или уже при использовании?



И вообще, распространять голую длл к непонятной нестандартной железке без всякой документации и примеров, это как минимум свинство.
Аватара пользователя
zl3p

Re: Разное - помогите: как использовать COM-технологию?

Сообщение zl3p »

Цитата ivank:



В какой момент? В момент создания ком-объекта, или уже при использовании?
Разное - помогите: как использовать COM-технологию?




при использовании.

Наверное, я предполагаю, что дело в том, что я не могу выполнить файл "Pluginps.mk", т.е. получить нужный мне dll proxy/stub.

Короче, я понял, какой плохой этот Visual Studio. В нём ничего не возможно скомпилировать до конца, чтоб не выдало ошибок.

Код:

Код: Выделить всё

 dlldata.c(16) : fatal error C1034: rpcproxy.h: no include path set

Причём, заметься, код НЕ Я писал.



Вот, например, [начиная разбираться с самого начала] составил, как в примере по COM, файл server.idl:



Код:

Код: Выделить всё

improt "unknwn.idl"
[
	object,
	uuid(32bb8356-b41b-11cf-a6bb-0080c7b2d682),
	helpstring("IX Interface"),
	pointer_default(unique)
]
interface IX : IUnknown
{
	HRESULT FxStringIn([in, string] wchar_t* szIn);
	HRESULT FxStringOut([out, string] wchar_t** szOut);
};

Начнём с того, что программа midl из текущей дириктории не доступна (правильно, ведь это вам не линукс). Но даже если указать полный пусть, типа "F:\BC5\SDKTOOLS\midl.Exe" server.idl, то всё заканчивается ошибкой:


Цитата:



command line error MIDL1005 : cannot find C preprocessor cl.exe



и меня это уже начало раздражать...
Ответить

Вернуться в «Программирование и базы данных»