Невозможно создать объект из VB6 COM DLL с помощью программы VB6 - PullRequest
1 голос
/ 10 марта 2012

У меня есть COM DLL VB6, которая была разработана в 32-битной системе WinXP. Он отлично работает на этом ПК из приложений C #, VB6 и Python. Я тестирую DLL на другой WinXP 32-битной системе и на Win7 32-битной и 64-битной. Программа Python отлично работает в любой системе. Программа VB6 выдает «Ошибка 429: компонент ActiveX не может создать объект».

Dim foo As testdll.Class1
MsgBox (1)
Set foo = New testdll.Class1
MsgBox (2)

Программа видит dll, так как первый MsgBox отображается нормально, а второй нет после попытки создания объекта. Есть идеи?

Ответы [ 2 ]

1 голос
/ 10 марта 2012

Сценарий Python, вероятно, создает экземпляры с поздним связыванием через ProgId.Я предполагаю, что вы не поддерживали двоичную совместимость с этой DLL, поэтому значения ClassId изменились, что привело к проблемам с ранним связанным клиентским кодом, таким как ваш клиент VB6.

0 голосов
/ 10 марта 2012

Скорее всего, .dll имеет зависимость от какой-либо другой библиотеки DLL, которая отсутствует на машинах, не предназначенных для разработки. Вы можете проверить это, используя Ходок зависимостей .

Не очень странно, что первая строка кода не вызывает ошибку: в этой строке Class1 не инициализируется, во второй - нет. Поэтому проверьте метод Class_Initialise для вызовов других DLL.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...