Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
CreateObject
|
|||
|---|---|---|---|
|
#18+
Создаю объект dim obj as object set obj = CreateObject("XXX.BBB.CCC") В самом VB все работает нормально, но вот при создании EXE-файла приложение тихо падает на данной строчке не выдавая никаких сообщений. Подскажите, с чем может быть проблема? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.08.2010, 16:26 |
|
||
|
CreateObject
|
|||
|---|---|---|---|
|
#18+
myauchaВ самом VB все работает нормально, но вот при создании EXE-файла приложение тихо падает на данной строчке не выдавая никаких сообщений. Подскажите, с чем может быть проблема? On Error-ами ситуация отлавливается? EXE-шник выполняется на той же машине? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.08.2010, 16:32 |
|
||
|
CreateObject
|
|||
|---|---|---|---|
|
#18+
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-шник выполняется на той же машине ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.08.2010, 19:32 |
|
||
|
CreateObject
|
|||
|---|---|---|---|
|
#18+
myauchaпросто ничего не происходитА что должно происходить? Создание объекта само по себе редко проявляется какими-то спецэффектами. myauchaдальнее связываниеШедевр. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.08.2010, 20:19 |
|
||
|
CreateObject
|
|||
|---|---|---|---|
|
#18+
2 Antonariy Когда человеку нечего сказать, но очень хочется - он начинает выеб...ться ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.08.2010, 21:58 |
|
||
|
CreateObject
|
|||
|---|---|---|---|
|
#18+
myauchaКогда человеку нечего сказать, но очень хочется - он начинает выеб...ться Судя по потертым модераторами вашим постам - у вас большой опыт. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.08.2010, 22:04 |
|
||
|
CreateObject
|
|||
|---|---|---|---|
|
#18+
могу предположить , что вам потребуется TLB для вашей DLL, которая реализует правильный COM-интерфейс к вашему классу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.08.2010, 10:09 |
|
||
|
CreateObject
|
|||
|---|---|---|---|
|
#18+
TLB-файл я подключаю в Reference, когда запускаю в среде разработки. Если я теперь проект скомпилирую в EXE-шник (не отключая Reference и указывая в программе явные типы), то он не запустится. Куда в данном случае TLB нужно еще пристроить? Может дело Licence?! Я на VB не писал 100 лет, но помню, что в свое время были какие-то заморочки с регистрацией лицензий ActiveX DLL. Может, кто тесно с VB работает, сможет напомнить что там и как?! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.08.2010, 10:58 |
|
||
|
CreateObject
|
|||
|---|---|---|---|
|
#18+
лицензии обычно на design time, у вас другой случай. разбирайтесь с вашей dll в исходниках. видимо в ней что-то не так в com-реализации класса вашего объекта. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.08.2010, 11:03 |
|
||
|
CreateObject
|
|||
|---|---|---|---|
|
#18+
Исходников нет, как тут разбирешься! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.08.2010, 11:36 |
|
||
|
CreateObject
|
|||
|---|---|---|---|
|
#18+
Если бы были проблемы с DLL, то она бы не работала и в среде разработки. Еще дополнительная информация для размышления. Она предоставляет клиентский доступ к активному приложению, запущенному на том же самом компьютере. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.08.2010, 11:39 |
|
||
|
CreateObject
|
|||
|---|---|---|---|
|
#18+
("XXX.BBB.CCC") покажите наконец точную строку вашей ProgID в реестре в CLASSES_ROOT такой ProgID присутствует для вашей Dll? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.08.2010, 11:44 |
|
||
|
CreateObject
|
|||
|---|---|---|---|
|
#18+
myaucha2 Antonariy Когда человеку нечего сказать, но очень хочется - он начинает выеб...тьсяЭто вы про себя что ли? Чувствуется опыт в этом самом… А лично мне есть что сказать. Например: dim obj as IClient set obj = new Client не аналогично этому: dim obj as object set obj = CreateObject("....") В первом случае вернется указатель на интерфейс IClient, а во втором на базовый класс, который указан в параметре CreateObject. Другими словами, поздним связыванием этот интерфейс никак не получить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.08.2010, 12:37 |
|
||
|
CreateObject
|
|||
|---|---|---|---|
|
#18+
зачем апаете, вы сначала ответьте на вопросы выше ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.08.2010, 15:31 |
|
||
|
CreateObject
|
|||
|---|---|---|---|
|
#18+
Вот она и есть - точная строка XXX.BBB.CCC ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.08.2010, 15:44 |
|
||
|
CreateObject
|
|||
|---|---|---|---|
|
#18+
myauchaВот она и есть - точная строка XXX.BBB.CCC и по такому ProgId у вас зарегистрирован entry-point в реестре для вашей dll? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.08.2010, 15:45 |
|
||
|
CreateObject
|
|||
|---|---|---|---|
|
#18+
Еще могу сказать, что зарегистрировать/разрегистрировать DLL-ку через regsvr32 нельзя. "Найти точку вход DllRegServer не удалось" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.08.2010, 15:48 |
|
||
|
CreateObject
|
|||
|---|---|---|---|
|
#18+
Угу, с таким именем и зарегистрирован. А что в нем плохого?! Зайдем с другой стороны, чем отличается принципиально запуск приложения из среды разработки и из EXE-файла применительно к DLL-ке с COM-овским содержимым?! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.08.2010, 15:51 |
|
||
|
CreateObject
|
|||
|---|---|---|---|
|
#18+
myauchaУгу, с таким именем и зарегистрирован. А что в нем плохого?! Зайдем с другой стороны, чем отличается принципиально запуск приложения из среды разработки и из EXE-файла применительно к DLL-ке с COM-овским содержимым?! ничем, у вас другая история: вы путаете интерфейс класса и сам класс ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.08.2010, 15:55 |
|
||
|
CreateObject
|
|||
|---|---|---|---|
|
#18+
myauchaЕще могу сказать, что зарегистрировать/разрегистрировать DLL-ку через regsvr32 нельзя. "Найти точку вход DllRegServer не удалось" тогда у вас не com-dll, может у вас .NET dll? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.08.2010, 15:56 |
|
||
|
CreateObject
|
|||
|---|---|---|---|
|
#18+
посмотрите dependency viewer на что там ваша dll-ка ссылается ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.08.2010, 15:57 |
|
||
|
CreateObject
|
|||
|---|---|---|---|
|
#18+
Вообще-то о DLL-ке мне говорили, как о .Net Dll, но поскольку я с .Net никогда не работал, то попробовал подключить ее к VB6. Она подключилась и прекрасно работает в среде, но только в среде. А что надо сделать, если DLL-ка .Net? Что меняется? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.08.2010, 16:12 |
|
||
|
CreateObject
|
|||
|---|---|---|---|
|
#18+
в gac зарегистрировать пробовали? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.08.2010, 16:13 |
|
||
|
CreateObject
|
|||
|---|---|---|---|
|
#18+
Упомянаются MSCOREE.DLL, KERNEL32.DLL, NTDLL.DLL ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.08.2010, 16:14 |
|
||
|
CreateObject
|
|||
|---|---|---|---|
|
#18+
Это экзотика какая-то! По-моему это не мой случай ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.08.2010, 16:19 |
|
||
|
CreateObject
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. Код: plaintext 1. подключите референс на вашу dll и попробуйте так ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.08.2010, 16:25 |
|
||
|
CreateObject
|
|||
|---|---|---|---|
|
#18+
Konst_One Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. Код: plaintext 1. подключите референс на вашу dll и попробуйте так ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.08.2010, 16:26 |
|
||
|
CreateObject
|
|||
|---|---|---|---|
|
#18+
Так я Reference с самого начала и подключал... и использовал наименования класса и интерфейса явно. А на Error нет реакции... просто падает втихую приложение ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.08.2010, 16:36 |
|
||
|
CreateObject
|
|||
|---|---|---|---|
|
#18+
myauchaТак я Reference с самого начала и подключал... и использовал наименования класса и интерфейса явно. А на Error нет реакции... просто падает втихую приложение я не видел такого кода у вас и вы до сих пор скрываете истинное название dll и её ProgID. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.08.2010, 16:38 |
|
||
|
CreateObject
|
|||
|---|---|---|---|
|
#18+
это намёк на то, что ваш подкласс скорее всего инициализируется из внешнего объекта, при вызове в качестве его метода/свойства ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.08.2010, 16:40 |
|
||
|
CreateObject
|
|||
|---|---|---|---|
|
#18+
myaucha, Есть различие(-я?) между тем, как выполнется CreateObject() под IDE, и в независимом процессе. Например, под IDE при вызове CreateObject() экземпляра объекта создаётся в том же потоке, что и основная программа (он же основной поток IDE), threading model при этом игнорируется. А при вызове CreateObject() из независимого процесса (запуск откомпилированного .exe) threading model учитывается, и если, например, для библиотеки выбрана модель Apartment Threaded, то экземпляр объекта создаётся в отдельном потоке. Поэтому я думаю, что в вашем случае проблема может быть связана с threading model библиотеки. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.08.2010, 21:30 |
|
||
|
CreateObject
|
|||
|---|---|---|---|
|
#18+
Так а решение каким должно быть? Что мне делать-то? К тому же CreateObject я просто попробовал использовать, как альтернативу TLB-файлу после того, как впервые заметил глюки ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.08.2010, 22:08 |
|
||
|
CreateObject
|
|||
|---|---|---|---|
|
#18+
Я высказал предположение в ответ на вопросы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-скрипте обращение к объекту идёт нормально? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.08.2010, 23:32 |
|
||
|
|

start [/forum/topic.php?all=1&fid=60&tid=2159522]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
40ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
63ms |
get tp. blocked users: |
1ms |
| others: | 13ms |
| total: | 157ms |

| 0 / 0 |
