powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / CreateObject
39 сообщений из 39, показаны все 2 страниц
CreateObject
    #36775561
myaucha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Создаю объект

dim obj as object
set obj = CreateObject("XXX.BBB.CCC")

В самом VB все работает нормально, но вот при создании EXE-файла приложение тихо падает на данной строчке не выдавая никаких сообщений. Подскажите, с чем может быть проблема?
...
Рейтинг: 0 / 0
CreateObject
    #36775565
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
XXX.BBB.CCC

в студию
...
Рейтинг: 0 / 0
CreateObject
    #36775584
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
myauchaВ самом VB все работает нормально, но вот при создании EXE-файла приложение тихо падает на данной строчке не выдавая никаких сообщений. Подскажите, с чем может быть проблема?
On Error-ами ситуация отлавливается? EXE-шник выполняется на той же машине?
...
Рейтинг: 0 / 0
CreateObject
    #36775949
myaucha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
XXX.BBB.CCC - некий ProgID на стороннюю DLL-ку. В ней реализован класс Client и интерфейс IClient (реализация, скорее всего, на C++). Когда я пишу в VB типы явным образом, установив reference на данную DLL-ку, то все нормально

dim obj as IClient
set obj = new Client

затем делаю make EXE и запускаю его... просто ничего не происходит, никаких сообщений, ничего вообще (в командной строке тоже ничего). Я подумал, что надо убрать reference и попробовать дальнее связывание

dim obj as object
set obj = CreateObject("....")

Опять же, до компиляции все работает, а после хрен там. Может какая то есть особенность в том, что есть интерфейс IClient, а есть класс Client?

Error-ами не отлавливается. EXE-шник выполняется на той же машине
...
Рейтинг: 0 / 0
CreateObject
    #36775991
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
myauchaпросто ничего не происходитА что должно происходить? Создание объекта само по себе редко проявляется какими-то спецэффектами.


myauchaдальнее связываниеШедевр.
...
Рейтинг: 0 / 0
CreateObject
    #36776074
myaucha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Antonariy

Когда человеку нечего сказать, но очень хочется - он начинает выеб...ться
...
Рейтинг: 0 / 0
CreateObject
    #36776077
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
myauchaКогда человеку нечего сказать, но очень хочется - он начинает выеб...ться
Судя по потертым модераторами вашим постам - у вас большой опыт.
...
Рейтинг: 0 / 0
CreateObject
    #36776284
myaucha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
up
...
Рейтинг: 0 / 0
CreateObject
    #36776421
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
могу предположить , что вам потребуется TLB для вашей DLL, которая реализует правильный COM-интерфейс к вашему классу.
...
Рейтинг: 0 / 0
CreateObject
    #36776540
myaucha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TLB-файл я подключаю в Reference, когда запускаю в среде разработки. Если я теперь проект скомпилирую в EXE-шник (не отключая Reference и указывая в программе явные типы), то он не запустится. Куда в данном случае TLB нужно еще пристроить?

Может дело Licence?! Я на VB не писал 100 лет, но помню, что в свое время были какие-то заморочки с регистрацией лицензий ActiveX DLL. Может, кто тесно с VB работает, сможет напомнить что там и как?!
...
Рейтинг: 0 / 0
CreateObject
    #36776559
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
лицензии обычно на design time, у вас другой случай. разбирайтесь с вашей dll в исходниках. видимо в ней что-то не так в com-реализации класса вашего объекта.
...
Рейтинг: 0 / 0
CreateObject
    #36776650
myaucha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Исходников нет, как тут разбирешься!
...
Рейтинг: 0 / 0
CreateObject
    #36776660
myaucha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если бы были проблемы с DLL, то она бы не работала и в среде разработки. Еще дополнительная информация для размышления. Она предоставляет клиентский доступ к активному приложению, запущенному на том же самом компьютере.
...
Рейтинг: 0 / 0
CreateObject
    #36776672
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
("XXX.BBB.CCC")

покажите наконец точную строку вашей ProgID
в реестре в CLASSES_ROOT такой ProgID присутствует для вашей Dll?
...
Рейтинг: 0 / 0
CreateObject
    #36776832
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
myaucha2 Antonariy

Когда человеку нечего сказать, но очень хочется - он начинает выеб...тьсяЭто вы про себя что ли? Чувствуется опыт в этом самом… А лично мне есть что сказать. Например:

dim obj as IClient
set obj = new Client

не аналогично этому:

dim obj as object
set obj = CreateObject("....")

В первом случае вернется указатель на интерфейс IClient, а во втором на базовый класс, который указан в параметре CreateObject. Другими словами, поздним связыванием этот интерфейс никак не получить.
...
Рейтинг: 0 / 0
CreateObject
    #36777399
myaucha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
up
...
Рейтинг: 0 / 0
CreateObject
    #36777478
myaucha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
up
...
Рейтинг: 0 / 0
CreateObject
    #36777486
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
зачем апаете, вы сначала ответьте на вопросы выше
...
Рейтинг: 0 / 0
CreateObject
    #36777529
myaucha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот она и есть - точная строка XXX.BBB.CCC
...
Рейтинг: 0 / 0
CreateObject
    #36777532
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
myauchaВот она и есть - точная строка XXX.BBB.CCC
и по такому ProgId у вас зарегистрирован entry-point в реестре для вашей dll?
...
Рейтинг: 0 / 0
CreateObject
    #36777543
myaucha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Еще могу сказать, что зарегистрировать/разрегистрировать DLL-ку через regsvr32 нельзя. "Найти точку вход DllRegServer не удалось"
...
Рейтинг: 0 / 0
CreateObject
    #36777558
myaucha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Угу, с таким именем и зарегистрирован. А что в нем плохого?!

Зайдем с другой стороны, чем отличается принципиально запуск приложения из среды разработки и из EXE-файла применительно к DLL-ке с COM-овским содержимым?!
...
Рейтинг: 0 / 0
CreateObject
    #36777574
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
myauchaУгу, с таким именем и зарегистрирован. А что в нем плохого?!

Зайдем с другой стороны, чем отличается принципиально запуск приложения из среды разработки и из EXE-файла применительно к DLL-ке с COM-овским содержимым?!

ничем, у вас другая история: вы путаете интерфейс класса и сам класс
...
Рейтинг: 0 / 0
CreateObject
    #36777578
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
myauchaЕще могу сказать, что зарегистрировать/разрегистрировать DLL-ку через regsvr32 нельзя. "Найти точку вход DllRegServer не удалось"

тогда у вас не com-dll, может у вас .NET dll?
...
Рейтинг: 0 / 0
CreateObject
    #36777584
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
посмотрите dependency viewer на что там ваша dll-ка ссылается
...
Рейтинг: 0 / 0
CreateObject
    #36777656
myaucha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вообще-то о DLL-ке мне говорили, как о .Net Dll, но поскольку я с .Net никогда не работал, то попробовал подключить ее к VB6. Она подключилась и прекрасно работает в среде, но только в среде. А что надо сделать, если DLL-ка .Net? Что меняется?
...
Рейтинг: 0 / 0
CreateObject
    #36777663
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в gac зарегистрировать пробовали?
...
Рейтинг: 0 / 0
CreateObject
    #36777666
myaucha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Упомянаются MSCOREE.DLL, KERNEL32.DLL, NTDLL.DLL
...
Рейтинг: 0 / 0
CreateObject
    #36777671
myaucha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Что такое gac?
...
Рейтинг: 0 / 0
CreateObject
    #36777673
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
myauchaЧто такое gac?

GAC
...
Рейтинг: 0 / 0
CreateObject
    #36777688
myaucha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Это экзотика какая-то! По-моему это не мой случай
...
Рейтинг: 0 / 0
CreateObject
    #36777710
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
Sub Test()
On error goro err_debug
Dim obj as XXX.BBB

Set obj = New XXX.BBB

Exit Sub
err_debug:
MsgBox Err.Number & ": " & Err.Description

End Sub

Код: plaintext
1.
'execute
Test

подключите референс на вашу dll и попробуйте так
...
Рейтинг: 0 / 0
CreateObject
    #36777712
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Konst_One
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
Sub Test()
On error goto err_debug
Dim obj as XXX.BBB

Set obj = New XXX.BBB

Exit Sub
err_debug:
MsgBox Err.Number & ": " & Err.Description

End Sub

Код: plaintext
1.
'execute
Test

подключите референс на вашу dll и попробуйте так
...
Рейтинг: 0 / 0
CreateObject
    #36777740
myaucha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Так я Reference с самого начала и подключал... и использовал наименования класса и интерфейса явно. А на Error нет реакции... просто падает втихую приложение
...
Рейтинг: 0 / 0
CreateObject
    #36777744
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
myauchaТак я Reference с самого начала и подключал... и использовал наименования класса и интерфейса явно. А на Error нет реакции... просто падает втихую приложение


я не видел такого кода у вас и вы до сих пор скрываете истинное название dll и её ProgID.
...
Рейтинг: 0 / 0
CreateObject
    #36777747
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
это намёк на то, что ваш подкласс скорее всего инициализируется из внешнего объекта, при вызове в качестве его метода/свойства
...
Рейтинг: 0 / 0
CreateObject
    #36778299
Фотография Бенедикт
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
myaucha,

Есть различие(-я?) между тем, как выполнется CreateObject() под IDE, и в независимом процессе. Например, под IDE при вызове CreateObject() экземпляра объекта создаётся в том же потоке, что и основная программа (он же основной поток IDE), threading model при этом игнорируется. А при вызове CreateObject() из независимого процесса (запуск откомпилированного .exe) threading model учитывается, и если, например, для библиотеки выбрана модель Apartment Threaded, то экземпляр объекта создаётся в отдельном потоке.
Поэтому я думаю, что в вашем случае проблема может быть связана с threading model библиотеки.
...
Рейтинг: 0 / 0
CreateObject
    #36778327
myaucha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Так а решение каким должно быть? Что мне делать-то? К тому же CreateObject я просто попробовал использовать, как альтернативу TLB-файлу после того, как впервые заметил глюки
...
Рейтинг: 0 / 0
CreateObject
    #36778408
Фотография Бенедикт
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я высказал предположение в ответ на вопросыmyauchaСоздаю объект

dim obj as object
set obj = CreateObject("XXX.BBB.CCC")

В самом VB все работает нормально, но вот при создании EXE-файла приложение тихо падает на данной строчке не выдавая никаких сообщений. Подскажите, с чем может быть проблема?иmyauchaЗайдем с другой стороны, чем отличается принципиально запуск приложения из среды разработки и из EXE-файла применительно к DLL-ке с COM-овским содержимым?!, а решения "с куста" я не знаю.

Какие точки входа есть у этой DLL (неясно вот, ActiveX ли это библиотека вообще), какие записи есть в реестре, какая threading model у библиотеки (HKCR\CLSID\{<Object class ID>}\InprocServer32\ThreadingModel)?

Или вот такой вопрос (по другому направлению), в VBS-скрипте обращение к объекту идёт нормально?
...
Рейтинг: 0 / 0
39 сообщений из 39, показаны все 2 страниц
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / CreateObject
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]