VB6 DLL другое поведение при отладке - PullRequest
1 голос
/ 28 июня 2019

Это очень распространенный случай, когда у меня около 2500 DLL.Все эти DLL сделаны с VB6.

Сценарий: запустите основной файл .exe и вызовите из него .dll.При запуске Crystal Report View он работает как чудо.

Сценарий 2. Запуск .exe-файла, созданного с помощью .NET через режим отладки, работает как чудо.

Сценарий 3: Запустите файл .exe, созданный с помощью .NET через RUNTIME. Бросьте исключение, показанное ниже .

Описание: Процесс был прерван из-за необработанного исключения.Информация об исключении: код исключения c0000005, адрес исключения 0F5E6BD0

Сообщение о полном стеке доступно по ссылке: Сообщение об полном исключении

Пробуется двумя способами.

  1. Добавление .dll в .exe в качестве ссылки

  2. Добавление через CreateObject

Этоодин мой моя работа.

Dim obj As Object
obj = CreateObject("Partneri.clPartneri")

Microsoft.VisualBasic.CallByName(obj, "PrikaziFormu", CallType.Method, cConrADO,
                                         cConADO, False, "", cJezik, rTagovi, rPrevodi, rPrava, 0, 0, cUsername)

Пожалуйста, имейте в виду: при запуске этого через отладку все прекрасно работает.

Единственный обходной путь, который я сейчас использую, - это создание .exe, сделанное в vb6.Вызовите этот .exe из .net exe и передайте имя опции в качестве параметра.При загрузке формы будет настроен объект, который отлично работает.

Дополнительно: при выполнении печати отчета Crystal Crystal при бросках нагрузки enter image description here

1 Ответ

0 голосов
/ 29 июня 2019

Вы пытались запустить exe как администратор, чтобы исключить, если это проблема с разрешениями?В режиме отладки вы, вероятно, работаете как администратор, но exe не будет.

У меня были похожие ошибки при вызове .NET COM-взаимодействия dll из VB6, но это было вызвано использованием наследования в .NETклассы.Или так казалось.

...