Использование .dll

imendan

Green Team
22.09.2010
159
4
BIT
0
Приветствую, Господа! Получил .dll файлик. Regsvr32 file.dll загружает удачно, но библиотека недоступна как COM-объект (CreateObject = "fileCom" выбрасывает ошибку, якобы подобного объекта не существует). Пытался разобраться с его наименованием, но ничего не нашел. Установил RegDllView, который отображает список доступных COM-объектов, вижу нужную dll-ку в списке. Но верное наименование так и не нашел. Поэтому и все ошибки. Прошу помощи...
Хочу добавить, что пробовал получить другие объекты, типа Excel, Explorer, там проблем не возникало.

Вариант 2:
Также пытался подтянуть данную .dll-ку через Declare Function Test Lib "file.dll" (ByVal x As String) As Long.
Библиотеку подгружает, но выдает ошибку "External function not found". Не знаю, что еще придумать.
Тестировал с другими библиотеками, работает прекрасно.

Общие сведения:
1. Windows 7 64-bit.
2. Notes 9.01.
3. Dll-файл (64-битный не читался, а 32-битный читается, но уже выдает ошибку, что я назвал выше).

В целом, прошу помощи по-любому из пути. Вообще, хотелось бы понять, как можно определить имя COM-объекта загруженной .dll.
 

Domino-Designer

Людям надо поморгать!
Lotus Team
06.12.2011
617
223
BIT
26
У нас было такое с неверно созданной dll, разработчики переписали дав возможность обращаться к объектам. Там какая то хитрость то ли при создании проекта, то ли при объявлении.

1. Что в логах винды по этому поводу написано? Небось прав каких не хватает ...
2. А из VB-ка Excel\Word работает?

 

garrick

Lotus Team
26.10.2009
1 367
152
BIT
364
Через Declare - это обычная (на самом деле для Lotus нужна специальная, созданная по по особым правилам) библиотека, а COM - это OLE сервер. COM работает только через CreateObject. Это совершенно разные вещи. Не смотрите, что у них расширения файлов одинаковые.
 

imendan

Green Team
22.09.2010
159
4
BIT
0
Да, как пишет пользователь Domino-Designer, библиотека создана чуток неверно. Попросил разработчиков найти эту хитрость и дать возможность прописывать ее как COM-объект в ОС. А пока они разбираются, я пытаюсь понять, как получать COM-объекты не по наименованию, а по CLSID. Они прислали пример на Delphi, но, к своему сожалению, у меня не хватает терпения разобраться в их исходниках, потому что уже не первая установленная программа не помогает мне без ошибок загрузить Delphi проект в IDE.
 

duchan

Green Team
20.09.2006
128
11
BIT
250
по CLSID вряд ли получится. Тут нужен экскурс в технологии СОМ, но если проще, то для работы с СОМ есть 2 вида, один раннее связывание, второй позднее, так вот, Лотус умеет только позднее связывание, т.е. CreateObject, а к нему подключаются по имени. Так же есть "небольшая" разница в работе с методам. И если СОМ библиотека не была создана для работы с поздним связыванием, то и Вы из Лотусов не сможите работать с этой библиотекой.
Кстати, OLE и СОМ хоть и похожи, но это разные технологии... и "доблестный" MS всячески пытается изничтожить обе эти технологии (у них генетический недостаток - написаны не текущей командой разрабов винды)
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!