Компонент C # COM работает с VB6, но не с VB5. Что с этим? - PullRequest
1 голос
/ 28 апреля 2011

В предыдущем вопросе я пытался заставить класс C # функционировать как COM-объект для VB5 и 6. Мне удалось заставить COM-объект работать с приложением VB6, но у меня возникли проблемы с его работой с VB5 - - на одной машине.

Для справки, предыдущий вопрос: ЗДЕСЬ .

Моя конечная цель - заставить этот COM-объект работать на VB5, но при запуске он выдает исключение: Ошибка выполнения 80070002. Исследование Stackoverflow указывает ЗДЕСЬ , что этот код ошибки является исключением из файла не найден , Программа VB6 может работать на той же машине, что и программа VB5 (идентичный код), COM DLL правильно зарегистрирована (с помощью regasm.exe), и TLB отображается в списке ссылок в VB5. Код выполнения:

Dim arcom As ARCOMObject.ARCOM_Class
Set arcom = New ARCOMObject.ARCOM_Class
Dim s As String
s = arcom.GetServiceResponse()
MsgBox (s)

Исключение выдается при выполнении строки, создающей экземпляр класса.

В других местах, которые я обнаружил, особенно во второй ссылке на SO, которую я сделал выше, было предложено использовать утилиту depen.exe, чтобы увидеть, какая зависимость может отсутствовать. К сожалению, я не могу найти ни одной такой утилиты ни на своей машине .Net dev, ни на машине VB5. Я не уверен, что это все равно скажет мне что-нибудь, но ...

Итак, что VB5 не может видеть, что VB6 либо видит, либо не нуждается?

ИЗМЕНЕНО В ДОБАВИТЬ:

Важное предостережение - Поскольку он выдает ошибку при запуске из IDE, я никогда не создавал исполняемый файл для его запуска, но когда я наконец сделал снимок и сделал это, потому что это нужно DependencyWalker, я обнаружил сам исполняемый файл работал нормально! Теперь DependencyWalker выдает мне сообщение «Предупреждение: по крайней мере один модуль имеет неразрешенный импорт из-за отсутствия функции экспорта в модуле, зависящем от задержки и загрузки». Вау, это круто, что на самом деле означает это предложение? LOL.

В любом случае, я не уверен, что у меня есть проблема, которую нужно решить в данный момент, но любые предложения приветствуются!

Ответы [ 2 ]

2 голосов
/ 29 апреля 2011

Вот что всегда работает для меня, когда я застреваю в решении подобных проблем.Ваша проблема в том, что в версии VB5 отсутствует файл где-то внизу, поэтому вам нужно знать, какой именно.Простое решение (без обращения к WinDBG) - запустить FileMon или ProcMon - отфильтровать его так, чтобы вы видели только ошибки.

Затем, когда ваше приложение завершится сбоем, вы увидите, какой файл отсутствовал.

...