2008-11-26 7 views
0

Контекст:Устранение неполадок: Не удается найти ссылка DLL неуправляемого при вызове пользовательского кода через Слово кода за

  1. У меня есть WPF приложение, которое использует некоторые неуправляемые библиотеки DLL в D: \ WordAutomation \ MyApp_Source \ Executables \ папка MyApp. Я могу дважды щелкнуть EXE, и все будет работать.
  2. Далее У меня есть проект с кодом 2007 Word, который ссылается на соответствующие управляемые DLL в указанной выше папке и пытается сделать то же самое. Поднимите интерфейс приложения. После адекватного «машета», я получаю свой пользовательский интерфейс. Но теперь есть пользователь действие, которое заставляет загрузку одной из неуправляемых библиотек DLL, взрывающихся последовательно с FileNotFoundException (без помощи/индикации которого файл отсутствует)

я поставил точку останова на проблеме line, очищенное окно вывода, нажмите F10, сравните выход, когда я запустил эту строку (добавление объекта в ObservableCollection, чей код CollectionChanged имеет код, который загружает неуправляемый кусок)

Случай 1: Дважды щелкните по EXE .. который отлично работает (слегка отломанный)

'MyApp.DesktopApp.exe': Loaded 'D:\WordAutomation\MyApp_Source\Executables\MyApp\ManagedFrameworkWrapper.dll', Symbols loaded. 
'MyApp.DesktopApp.exe': Loaded 'D:\WordAutomation\MyApp_Source\Executables\MyApp\Unmanaged.Framework.dll' 
'MyApp.DesktopApp.exe': Loaded 'C:\WINDOWS\WinSxS\x86_Microsoft.VC90.DebugCRT_1fc8b3b9a1e18e3b_9.0.21022.8_x-ww_597c3456\msvcr90d.dll', Symbols loaded. 
'MyApp.DesktopApp.exe': Loaded 'C:\WINDOWS\WinSxS\x86_Microsoft.VC90.DebugCRT_1fc8b3b9a1e18e3b_9.0.21022.8_x-ww_597c3456\msvcp90d.dll', Symbols loaded. 
'MyApp.DesktopApp.exe': Loaded 'C:\WINDOWS\WinSxS\x86_Microsoft.VC90.DebugMFC_1fc8b3b9a1e18e3b_9.0.21022.8_x-ww_2a62a75b\mfc90ud.dll', Symbols loaded. 
'MyApp.DesktopApp.exe': Loaded 'C:\WINDOWS\system32\msimg32.dll' 
'MyApp.DesktopApp.exe': Loaded 'D:\WordAutomation\MyApp_Source\Executables\MyApp\HelperFunctions.dll' 
'MyApp.DesktopApp.exe': Loaded 'C:\WINDOWS\system32\dbghelp.dll' 
'MyApp.DesktopApp.exe': Loaded 'C:\WINDOWS\WinSxS\x86_Microsoft.VC90.DebugCRT_1fc8b3b9a1e18e3b_9.0.21022.8_x-ww_597c3456\msvcm90d.dll', Symbols loaded. 
'MyApp.DesktopApp.exe': Loaded 'C:\WINDOWS\WinSxS\x86_Microsoft.VC90.MFCLOC_1fc8b3b9a1e18e3b_9.0.21022.8_x-ww_11f3ea3a\mfc90enu.dll', Binary was not built with debug information. 
CCollectionDataType ConstCCollectionDataType ConstCCollectionDataType ConstCCollectionDataType ConstCCollectionDataType ConstCCollectionDataType Const'MyApp.DesktopApp.exe' (Managed): Loaded 'D:\WordAutomation\MyApp_Source\Executables\MyApp\ManagedFrameworkWrapper.dll', Symbols loaded. 
'MyApp.DesktopApp.exe' (Managed): Loaded 'C:\WINDOWS\WinSxS\x86_Microsoft.VC90.DebugCRT_1fc8b3b9a1e18e3b_9.0.21022.8_x-ww_597c3456\msvcm90d.dll', Symbols loaded. 
The thread 'Win32 Thread' (0x12ec) has exited with code 0 (0x0). 

Случай 2: Выполнить ту же линию, но запускается из ворде кода за .cs файл

A first chance exception of type 'System.IO.FileNotFoundException' occurred in WindowsBase.dll 
The program '[5320] WINWORD.EXE: Managed' has exited with code 0 (0x0). 

Я попытался

  • добавления неуправляемых библиотек DLL в той же папке, как (слово doc + VSTO dll)
  • добавлена ​​папка в переменную окружения . Все такой же.
  • все, что я мог думать .. за последнюю пару дней

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

'WINWORD.EXE' (Managed): Loaded 'C:\Documents and Settings\pillaigi\Local Settings\Application Data\assembly\dl3\6HQYB5GK.LY0\KC4WN109.HT4\4d81c901\70abeb86_124ec901\MyWPFPlotPopup.DLL', Symbols loaded. 

Наконец, чтобы закрыть изящно ... Помогите!

ответ

1

Чтобы узнать, что вызывает dll, и где ищет dll, используйте ProcessMon (без sysinternals).

Смотрите мой ответ здесь: Referenced answer

+0

Этот инструмент является чисто удивительным. Спасибо .. Я думаю, что вижу файл, который отсутствует ... Я вижу, что многие вызовы QueryOpen терпят неудачу для некоторой неуправляемой DLL с возвратом статуса NAME_NOT_FOUND. (Тот факт, что я пробираюсь в чей-то код, тоже не приносит мне пользы) – Gishu 2008-11-26 12:52:02

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

  • Нет связанных вопросов^_^