DllNotFoundException PInvoke проблема
Во время выполнения тестов в Visual Studio 2013 (код C#) у меня возникает такая ошибка:
System.TypeInitializationException: System.TypeInitializationException: инициализатор типа для 'Teigha.Core.GlobalsPINVOKE' вызвал исключение. ---> System.TypeInitializationException: инициализатор типа для SWIGExceptionHelper выдал исключение. ---> System.DllNotFoundException: невозможно загрузить библиотеку DLL 'TD_SwigCore_4.00_10.dll': указанный модуль не найден. (Исключение из HRESULT: 0x8007007E). Прерывание выполнения теста.
Мой друг использует ту же ветку кода на другом компьютере. У него нет таких проблем. Все dll копируются в каталог TestResults\Deploy во время сборки (тоже TD_SwigCore_4.00_10.dll).
я использовал
dependbin /DEPENDENTS TD_SwigCore_4.00_10.dll
проверить dll иждивенцев этой dll: KERNEL32.dll, USER32.dll, ole32.dll, TD_Ge_4.00_10.dll, TD_DbRoot_4.00_10.dll, TD_Gi_4.00_10.dll, TD_Gs_4.00_10.dll, TD_SpatialIndex_4.00_10.dll, TD_Br_4.00_10.dll, TD_Db_4.00_10.dll, TD_Root_4.00_10.dll, TD_Alloc_4.00_10.dll, MSVCP100.dll, MSVCR100.dll. Я скопировал все эти dll в папку system32, чтобы все dll были загружены ( https://msdn.microsoft.com/en-us/library/7d83bc18(v=vs.120).aspx). Это не помогает Ошибка все еще существует.
1 ответ
Решением этой проблемы было скопировать отсутствующие библиотеки в каталог: {Visual_project_directory}\bin\Debug. Файлы не могут быть скрыты внутри некоторых каталогов, они должны быть скопированы прямо в этот каталог. Пропавшие dll могут быть найдены с помощью dumpbin (он установлен вместе с Visual Studio в одном из его каталогов) или Dependency Walker.