2012-07-23 4 views
1

В этом приложении MFC, которая встраивает некоторый старый просмотр Crystal Reports, на выходе я получаю аварию (the instruction at ... referenced memory at ...; the value could not be "read").Сбоя при выходе из приложения

не может работать в режиме отладки, так как он воспроизводит только на компьютере, на котором не установлена ​​Visual Studio, и у меня нет запасной лицензии на использование.

Я добавил несколько протоколов и вызов FreeLibrary для выгрузки файла u2dpost.dll (ручка как-то недействительна).

Аварийная ситуация, похоже, находится в некотором коде DLL, который не может быть выгружен.

Могу ли я выгрузить разгрузку? Я открыт, чтобы избежать краха.

Вызов exit(0) (уродливый, как есть) по-прежнему приводит к аварии.

Адрес инструкции постоянный относительно того, какой отчет открывается приложением.

На другом компьютере (такая же операционная система XP SP3, те же самые Crystal dll, только Oracle 11g против 10g), где отладка может быть легкой (Visual C++ установлен), авария не воспроизводится.

В случае проблем с ПК это происходит постоянно, если я запускаю диалог экспорта (тогда закройте его или фактически экспортируйте, это не имеет значения).

Как я могу исходить отсюда?

Edit:

Я нашел разницу в этом:

IDatabasePtr PDB = pRep-> GetDatabase();

pDB-> AddRef(); // с этой строкой он падает на XP pc; без этого он выходит из строя на моей рабочей станции Windows 7

(авария Win & на CCmdTarget :: OnFinalRelease() последняя строка: удаление этого;) Любые предложения?

+1

Вы уверены, что на данной машине есть необходимые компоненты для распространения? – SChepurin

+0

Да, все работает, это просто, что при выходе он сбой – user581243

+1

Вы пробовали удаленную отладку: http://msdn.microsoft.com/en-us/library/y7f5zaaa.aspx – IronMensan

ответ

0

Если это вообще помогает, я сталкиваюсь с той же проблемой с одним из наших устаревших программ.

Я проверил отладочную версию моего sw и использовал DebugDiag для захвата аварии, и оказалось, что когда (выпускает) некоторые хрустальные интерфейсы отчетов (автоматически с помощью com destructor), он падает. Таким образом, я завершил добавление дополнительного AddRef к проблемному интерфейсу. Только когда версия окон 7 или выше.

Смежные вопросы