Как отлаживать манифестные ошибки? - PullRequest
1 голос
/ 15 апреля 2010

Я создаю приложение, которое зависит от сторонней библиотеки, которая, в свою очередь, зависит от MSVCP90D.dll. При запуске приложения оно не запускается и выдает сообщение об ошибке:

альтернативный текст http://i39.tinypic.com/dn0ihf.jpg

Я нашел такую ​​библиотеку в C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\redist\Debug_NonRedist\amd64\Microsoft.VC90.DebugCRT и C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\redist\Debug_NonRedist\x86\Microsoft.VC90.DebugCRT. Как видите, один из них является 64-разрядным, а другой - 32-разрядным. Когда я поместил 64-битный в каталог приложения, приложение молча вылетает при загрузке (журнал из окна вывода Visual Studio ниже). С 32-битным я получаю еще одно сообщение об ошибке:

альтернативный текст http://i43.tinypic.com/33azzoj.jpg

Если я нажму Abort - программы закроются, Retry приведет к прерыванию сеанса отладки для файла crt0msg.c. Это системный файл, и я не знаю, как его отладить. Если я нажимаю Игнорировать, я получаю еще одно сообщение об ошибке:

альтернативный текст http://i39.tinypic.com/vhf4ia.jpg

Итак, вопрос как отлаживать такие ошибки? Пожалуйста, дайте мне несколько ссылок, где я могу прочитать больше об этом или указать, что именно я должен делать в таких случаях. Я знаю, что это связано с явными проблемами, поэтому, если вы знаете какие-либо проблемы, дайте мне ссылку на хороший ресурс, который подробно описывает манифесты, поскольку то, что я обнаружил до сих пор, только смутило меня.

Я использую 64-разрядную версию Windows 7, Visual Studio 2008 версии 9.0.30729.4108 QFE.

Это журнал для 64-разрядной версии библиотеки MSVCP90D.dll:

'chrome.exe': Loaded 'D:\Projects\Chromium\devenv\install\build-msvc-debug\chromium-xml3d-rtsg2\chrome.exe', Symbols loaded.
'chrome.exe': Loaded 'C:\Windows\SysWOW64\ntdll.dll', Symbols loaded (source information stripped).
'chrome.exe': Loaded 'C:\Windows\SysWOW64\kernel32.dll', Symbols loaded (source information stripped).
'chrome.exe': Loaded 'C:\Windows\SysWOW64\KernelBase.dll', Symbols loaded (source information stripped).
'chrome.exe': Loaded 'C:\Windows\SysWOW64\user32.dll', Symbols loaded (source information stripped).
'chrome.exe': Loaded 'C:\Windows\SysWOW64\gdi32.dll', Symbols loaded (source information stripped).
'chrome.exe': Loaded 'C:\Windows\SysWOW64\lpk.dll', Symbols loaded (source information stripped).
'chrome.exe': Loaded 'C:\Windows\SysWOW64\usp10.dll', Symbols loaded (source information stripped).
'chrome.exe': Loaded 'C:\Windows\SysWOW64\msvcrt.dll', Symbols loaded (source information stripped).
'chrome.exe': Loaded 'C:\Windows\SysWOW64\advapi32.dll', Symbols loaded (source information stripped).
'chrome.exe': Loaded 'C:\Windows\SysWOW64\sechost.dll', Symbols loaded (source information stripped).
'chrome.exe': Loaded 'C:\Windows\SysWOW64\rpcrt4.dll', Symbols loaded (source information stripped).
'chrome.exe': Loaded 'C:\Windows\SysWOW64\sspicli.dll', Symbols loaded (source information stripped).
'chrome.exe': Loaded 'C:\Windows\SysWOW64\cryptbase.dll', Symbols loaded (source information stripped).
'chrome.exe': Loaded 'C:\Windows\SysWOW64\shell32.dll', Symbols loaded (source information stripped).
'chrome.exe': Loaded 'C:\Windows\SysWOW64\shlwapi.dll', Symbols loaded (source information stripped).
'chrome.exe': Loaded 'C:\Windows\SysWOW64\winmm.dll', Symbols loaded (source information stripped).
'chrome.exe': Loaded 'C:\Windows\SysWOW64\version.dll', Symbols loaded (source information stripped).
'chrome.exe': Loaded 'C:\Windows\SysWOW64\psapi.dll', Symbols loaded (source information stripped).
'chrome.exe': Loaded 'C:\Windows\SysWOW64\imm32.dll', Symbols loaded (source information stripped).
'chrome.exe': Loaded 'C:\Windows\SysWOW64\msctf.dll', Symbols loaded (source information stripped).
'chrome.exe': Loaded 'D:\Projects\Chromium\devenv\install\build-msvc-debug\chromium-xml3d-rtsg2\chrome.dll', Symbols loaded.
'chrome.exe': Loaded 'C:\Windows\SysWOW64\ole32.dll', Symbols loaded (source information stripped).
'chrome.exe': Loaded 'C:\Windows\SysWOW64\oleaut32.dll', Symbols loaded (source information stripped).
'chrome.exe': Loaded 'C:\Windows\winsxs\x86_microsoft.windows.common-controls_6595b64144ccf1df_6.0.7600.16385_none_421189da2b7fabfc\comctl32.dll', Symbols loaded (source information stripped).
'chrome.exe': Loaded 'C:\Windows\SysWOW64\oleacc.dll', Symbols loaded (source information stripped).
'chrome.exe': Loaded 'C:\Windows\SysWOW64\opengl32.dll', Symbols loaded (source information stripped).
'chrome.exe': Loaded 'C:\Windows\SysWOW64\glu32.dll', Symbols loaded (source information stripped).
'chrome.exe': Loaded 'C:\Windows\SysWOW64\ddraw.dll', Symbols loaded (source information stripped).
'chrome.exe': Loaded 'C:\Windows\SysWOW64\dciman32.dll', Symbols loaded (source information stripped).
'chrome.exe': Loaded 'C:\Windows\SysWOW64\setupapi.dll', Symbols loaded (source information stripped).
'chrome.exe': Loaded 'C:\Windows\SysWOW64\cfgmgr32.dll', Symbols loaded (source information stripped).
'chrome.exe': Loaded 'C:\Windows\SysWOW64\devobj.dll', Symbols loaded (source information stripped).
'chrome.exe': Loaded 'C:\Windows\SysWOW64\dwmapi.dll', Symbols loaded (source information stripped).
'chrome.exe': Loaded 'C:\Windows\SysWOW64\secur32.dll', Symbols loaded (source information stripped).
'chrome.exe': Loaded 'D:\Projects\Chromium\devenv\install\build-msvc-debug\rtsg2\bin\RTSG2.dll', Symbols loaded.
'chrome.exe': Unloaded 'D:\Projects\Chromium\devenv\install\build-msvc-debug\chromium-xml3d-rtsg2\chrome.dll'
'chrome.exe': Unloaded 'D:\Projects\Chromium\devenv\install\build-msvc-debug\rtsg2\bin\RTSG2.dll'
'chrome.exe': Unloaded 'C:\Windows\SysWOW64\secur32.dll'
'chrome.exe': Unloaded 'C:\Windows\SysWOW64\opengl32.dll'
'chrome.exe': Unloaded 'C:\Windows\SysWOW64\ddraw.dll'
'chrome.exe': Unloaded 'C:\Windows\SysWOW64\dwmapi.dll'
'chrome.exe': Unloaded 'C:\Windows\SysWOW64\setupapi.dll'
'chrome.exe': Unloaded 'C:\Windows\SysWOW64\devobj.dll'
'chrome.exe': Unloaded 'C:\Windows\SysWOW64\cfgmgr32.dll'
'chrome.exe': Unloaded 'C:\Windows\SysWOW64\dciman32.dll'
'chrome.exe': Unloaded 'C:\Windows\SysWOW64\glu32.dll'
'chrome.exe': Unloaded 'C:\Windows\SysWOW64\oleacc.dll'
'chrome.exe': Unloaded 'C:\Windows\winsxs\x86_microsoft.windows.common-controls_6595b64144ccf1df_6.0.7600.16385_none_421189da2b7fabfc\comctl32.dll'
'chrome.exe': Unloaded 'C:\Windows\SysWOW64\oleaut32.dll'
'chrome.exe': Unloaded 'C:\Windows\SysWOW64\ole32.dll'
'chrome.exe': Loaded 'C:\Windows\SysWOW64\ole32.dll', Symbols loaded (source information stripped).
The program '[1152] chrome.exe: Native' has exited with code 9 (0x9).

1 Ответ

8 голосов
/ 16 апреля 2010

Изучив некоторые онлайн-ресурсы, я сам нашел решение. Таким образом, манифесты должны быть встроены в каждое приложение и зависимую библиотеку, которая требует загрузки некоторой внешней библиотеки по очереди. В моей ситуации сторонняя библиотека, которую я использовал, не включала такой манифест. Я включил один вручную, и это решило проблему.

Инструментами, которые я использовал для устранения этой проблемы, были Resource Hacker , Dependency Walker и некоторые онлайн-руководства, включая другие вопросы по StackOverflow:

Надеюсь, это кому-нибудь пригодится.


...