2016-08-30 2 views
0

Bei Tests Ausführung in Visual Studio 2013 (C# -Code) Ich habe solche Fehler:DllNotFoundException PInvoke Ausgabe

System.TypeInitializationException: System.TypeInitializationException: Der Initialisierer Typ für 'Teigha.Core.GlobalsPINVOKE' eine Ausnahme ausgelöst hat. ---> System.TypeInitializationException: Der Typinitialisierer für 'SWIGExceptionHelper' hat eine Ausnahme ausgelöst. ---> System.DllNotFoundException: Kann DLL 'TD_SwigCore_4.00_10.dll' nicht laden: Das angegebene Modul konnte nicht gefunden werden. (Ausnahme von HRESULT: 0x8007007E). Testausführung wird abgebrochen.

Mein Freund verwendet den gleichen Code-Zweig auf einem anderen Computer. Er hat keine solchen Probleme. Alle DLLs werden während des Builds in das Verzeichnis TestResults \ Deploy kopiert (auch TD_SwigCore_4.00_10.dll).

I verwendet

dependbin /DEPENDENTS TD_SwigCore_4.00_10.dll 

dll Bliebene dieser dll zu überprüfen: 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. Ich habe alle diese DLLs in System32-Ordner kopiert, so dass alle DLLs geladen werden würden (https://msdn.microsoft.com/en-us/library/7d83bc18(v=vs.120).aspx). Das hilft nicht. Fehler ist weiterhin vorhanden.

+1

Das Kopieren von Abhängigkeiten zu system32 ist ein drastischer Fehler und führt sehr wahrscheinlich zu Fehlfunktionen anderer Programme. Und das funktioniert nicht, weil ein 32-Bit-Prozess zu syswow64 umgeleitet wird. Sie müssen den Schaden beheben und Abhängigkeiten in das Verzeichnis kopieren, in dem die exe gespeichert ist. –

+0

Aus welchem ​​Verzeichnis wird Test Runner in Visual Studio 2013 ausgeführt? Ich denke, das muss ein Verzeichnis sein, in dem dlls zuerst gesucht werden? Oder vielleicht in VSproject \ bin \ Debug? Normalerweise verwende ich ClearCase View, um die Anwendung zu starten (aber jetzt spreche ich über Tests). – Zygmuntix

Antwort

0

Lösung für dieses Problem war, fehlende DLLs in das Verzeichnis zu kopieren: {Visual_project_directory} \ bin \ Debug. Dateien können nicht in einigen Verzeichnissen versteckt werden, sie müssen direkt in dieses Verzeichnis kopiert werden. Fehlende DLLs können mithilfe von Dumpbin (es wird mit Visual Studio in einem seiner Verzeichnisse installiert) oder Dependency Walker gefunden werden.