Отладка VB6 dll из VB6 exe - PullRequest
       26

Отладка VB6 dll из VB6 exe

2 голосов
/ 02 ноября 2011

У меня есть программа VB6, которая вызывает библиотеку VB6, которая в свою очередь вызывает другую библиотеку VB6. Когда я выполняю вызывающую программу, возникает ошибка приложения, которую я не могу точно определить, поэтому я исследовал, как можно «увидеть» ошибку в dll.

Я прочитал запись Stackoverflow Вопрос об отладке VB6 dll

и следовал указаниям Booji Boy, чтобы создать VBG. Я также следовал его указаниям и удалил две библиотеки DLL из списка ссылок. Вызывающая программа принимает файл .txt в качестве входных данных. Когда я выполнил exe, я получил эту ошибку:

Номер ошибки: 13Описание: Несоответствие типов

Ошибка не генерируется приложением.

Что это значит? Как я могу отладить эту проблему?

Ответы [ 3 ]

6 голосов
/ 02 ноября 2011

У вас должен быть весь исходный код для EXE и двух DLL. Вы добавляете все проекты в один групповой файл, то есть VBG. У вас должна быть ссылка в проекте EXE на первую DLL. Я понятия не имею, почему вам сказали, что вы должны удалить их. В первом проекте DLL должна быть ссылка на второй проект DLL. VB достаточно умен, чтобы молча заменить ссылку DLL ссылкой на проект. Это также достаточно умно, чтобы молча заменить ссылку проекта ссылкой на DLL, если вы удаляете проект DLL из группы проектов.

Убедитесь, что для обработки ошибок установлено значение «Разрыв всех ошибок» или «Разрыв в классе».

Ошибка несоответствия типов может возникать из-за простых вещей, таких как присвоение нечисловой строки числовой переменной. Это становится более сложным, если вы передаете объектные ссылки. Если вы видите, что эта ошибка возникает на что-то вроде:

Set myObject = someOtherObject

... и выглядит так, будто они должны быть одного типа, это может быть очень сложно. Но сначала я позволю вам сделать отладку.

0 голосов
/ 10 мая 2018

При начале работы в VBG может возникнуть несоответствие типов, если ссылки на библиотеки несовместимы. Одна библиотека может ссылаться на другую в VBG; вторая может ссылаться на скомпилированную версию. Передача объектов между ними может привести к этой ошибке.

Конкретный пример:

  • VBG содержит код для: A.DLL, B.DLL, C.DLL
  • A, ссылки B в VBG
  • C ссылки B , который компилируется
  • Код в A вызывает код в C, передавая объект, определенный классом в B.
  • Несоответствие типов

C должен был ссылаться на B в VBG.

0 голосов
/ 21 апреля 2018

Вы можете использовать проект с открытым исходным кодом, созданный в Visual Basic 6.0.Он называется " Debuggy v2 ". Этот проект имеет несколько ролей:

-debugger -disassembler -Windows-экстрактор -file hex-редактор -window sniffer -API spy

все в одном лице.Я могу быть полезным для того, что вам нужно.

...