Как исправить "Неожиданную ошибку (32801)" при компиляции программы VB 6?

Мне нужно поддерживать старую VB 6 ActiveX DLL, вызываемую другой сторонней программой, для которой у меня нет исходников и т.д. Эта DLL прекрасно работает и компилируется с API указанной программы уже около 6 лет и 3 основные версии.

Но теперь, когда я пытаюсь скомпилировать DLL с новой основной версией, возникает упомянутая ошибка. Похоже, что ошибка возникает до вызова "моего" кода, поэтому отладка или логирование бесполезны. Единственное средство - компилировать без бинарной совместимости, что не является реальным вариантом. Мой поиск в Google выявил довольно много людей с такой же проблемой, но без решения.

Кто-нибудь знает, как решить эту проблему?

Заранее спасибо

банзай

Решение

Похоже, что один из типов в интерфейсах, определенных в вашей новой DLL, отличается от типа в предыдущей DLL. Я делаю вывод, что вы используете типы, определенные в сторонней программе, в публичных интерфейсах вашей DLL. Мне кажется, что сторонняя программа изменила определение одного из типов, но имя и GUID остались прежними. Вы можете использовать что-то вроде OLE/COM Object viewer, чтобы проверить, так ли это. Если это так, то вы можете пожаловаться издателю сторонней программы. Достаточно ли у вас политической силы, чтобы добиться успеха?

Брюс МакКинни, гуру, написавший Hardcore Visual Basic 6, столкнулся с такой же проблемой со структурой в библиотеке типов, где он изменил некоторые типы-члены. Единственным решением, которое он смог найти, было (по сути) нарушение бинарной совместимости - и это после некоторой переписки с командой компиляторов VB6, которую он знал достаточно хорошо. Я не думаю, что кто-то другой смог бы сделать лучше.

Комментарии (3)

На devx.com есть обсуждение этой ошибки, которое, похоже, указывает на то, что проблема связана с Microsoft's Scripting Runtime (scrrun.dll).

Совместимость FileSystemObject Неожиданная ошибка (32810)

Ссылается ли ваша DLL на эту библиотеку? Если да, то можете ли вы удалить ссылку (например, заменить функциональность FileSystemObject внутренними функциями VB для работы с файлами и/или вызовами API).

Комментарии (3)

Отмечены ли какие-либо файлы, связанные с основным компилируемым проектом, как Read-Only (т.е. не проверенные из SourceSafe или аналогичного хранилища)?

.exp .vbw *.lib

Комментарии (1)