std::ifstream#close() führt zu einem Fehler
-
Beim Debugen mit Ollydbg habe ich herausgefunden, dass wenn ich ifstream im Modul, welches Ruby linkt, bei close() über das Modul msvcr120-ruby210.dll die fclose-Funktion von dem Modul msvcr120 (C:\Windows\SysWow64\msvcr120.dll). Bei close() Aufrufen aus dem anderem Modul (welches nicht Ruby Linkt) wird die fclose() funktion ohne umwege über andere DLLs direkt aufgerufen und dann zwar im Modul msvcr1_1 (C:\Windows\SysWow64\msvcr120d.dll). Könnte die in diesem Fall falsch geladene DLL der Fehler sein?
-
Mr.Long schrieb:
Beim Debugen mit Ollydbg habe ich herausgefunden, dass wenn ich ifstream im Modul, welches Ruby linkt, bei close() über das Modul msvcr120-ruby210.dll die fclose-Funktion von dem Modul msvcr120 (C:\Windows\SysWow64\msvcr120.dll). Bei close() Aufrufen aus dem anderem Modul (welches nicht Ruby Linkt) wird die fclose() funktion ohne umwege über andere DLLs direkt aufgerufen und dann zwar im Modul msvcr1_1 (C:\Windows\SysWow64\msvcr120d.dll). Könnte die in diesem Fall falsch geladene DLL der Fehler sein?
Ja du mischt hier debug runtime mit der relase version. (Beachte das d am ende des dll namen)
-
Ich habe jetzt Ruby nochmal mit dem Zusatz -MDd kompiliert. Wenn ich nun mit Ollydbg durchsteppe springt er auch nicht mehr in die msvcr120, sondern eben in die msvcr120d, was ja jetzt soweit eigentlich ganz gut ist. Nur bekomme ich noch immer an der selben Position den selben Error.EDIT: Nein, ich war nur zu dämlich zu checken, dass irgendwo meine Compileroption überschrieben wurde. Der Kompiler hat nämlich den Interpreter wieder mit /MD kompiliert... Jetzt wo ich das richtig mit /MDd kompiliert habe läuft's.