Не удается отладить компонент ActiveX Visual Basic 6 в 64-разрядной ОС - PullRequest
0 голосов
/ 02 июня 2010

Ситуация может показаться немного странной, но я должен играть с тем, что у меня есть. Существует 64-разрядная серверная ОС Win2003 и устаревшее приложение, написанное с использованием Visual Studio 6. Приложение состоит из двух частей: компонентов ActiveX, написанных на VB6, и кода C ++, который их использует.

Мне нужно отладить код компонентов. Я установил Visual Studio 6 на сервер, и я могу войти в код компонента. Тогда я получил следующую ситуацию:

  1. Код C ++ работает до тех пор, пока не потребуется создать экземпляр компонента A.
  2. Мы переключаемся на VB6 и запускаем отладочный код компонента VB6.
  3. В самом начале компонент A создает экземпляр класса C, предоставляемый компонентом B. На этом этапе отладчик VB6 показывает сообщение об ошибке с заголовком "OLEDB32.DLL" и следующий текст: "Не удалось загрузить библиотеку ресурсов C C: \ Program Files (x86) \ Common Files \ System \ Ole DB \ OLEDB32R.DLL"

Дополнительная информация. Последним этапом инициализации класса C является открытие соединения ADO с сервером SQL с использованием поставщика OLEDB.

Буду признателен за любые идеи о том, как решить эту проблему. Заранее спасибо.

Ответы [ 2 ]

0 голосов
/ 01 мая 2012

MDAC регистрирует классы ADO / OLEDB следующим образом: %CommonProgramFiles%\System\Ole DB\sqloledb.dll

Проверьте, не повреждена ли какая-либо среда вашего процесса. Если вы используете менеджер перезапуска (при сбое приложения оно перезапускается) не восстанавливает среду. Мы охраняем что-то вроде этого в Sub Main

    If LenB(Environ$("CommonProgramFiles")) = 0 Then
        Call SetEnvironmentVariable("CommonProgramFiles", pvGetSpecialFolder(ucsOdtProgramFilesCommon))
    End If
    If LenB(Environ$("CommonProgramFiles(x86)")) = 0 Then
        Call SetEnvironmentVariable("CommonProgramFiles(x86)", pvGetSpecialFolder(ucsOdtProgramFilesCommon))
    End If
0 голосов
/ 02 июня 2010

Отладчик VB6 имеет репутацию иногда ненадежного, и я не уверен, что он когда-либо поддерживался в 64-битных операционных системах.

Есть несколько других вариантов отладки VB6.

  • Вы можете попробовать отладить VB6 в отладчике Visual C ++ 6 одновременно с C ++. Скомпилируйте VB6 в собственный код с символами (создайте файлы PDB). Тогда вы сможете выйти из C ++ прямо в VB6 и продолжить отладку. Я делал это раньше (не на 64-битной). Вот статья базы знаний Microsoft *1007* о том, как сделать это с C ++ 5 - я думаю, что в C ++ 6 это почти то же самое.
  • Или вы можете попробовать запустить программу в Windbg , бесплатном автономном отладчике от Microsoft. Снова скомпилируйте ваш VB6 в собственный код с символами (файлы PDB), и вы сможете отлаживать VB6 в Windbg. Вы также должны иметь возможность отлаживать C ++ одновременно.
...