Wrapper DLL erstellt mit VS 2005 streikt bei VC6 App's



  • Hallo, ich habe folges Problem, meine DLL ruft Funktionen einer anderen DLL auf.
    Meine DLL habe ich mit dem VC 2005'er Compiler erstellt. Die DLL die ich aufrufe wurde laut dumpbin miz VC6 erstellt genau so wie die Programm die meine DLL aufrufen sollen. Das Problem ist jetzt, das die aufrufenden Programm abstürzen.
    Etwas Debugcode in meiner LIB hat gezeigt, das das immer nach dem verlassen der Funktionen passiert. Da ich sonst unter Linux programmiere, komme ich hier nicht weiter:( Wer hat ein paar Ideeen? Der Programmcode der DLL die ich aufrufen, sowie des aufrunfenden Programmes habe ich nicht. Ob meine DLL generell funktioniert, habe ich geprüft, in dem ich mir selber ein Programm geschrieben habe, welches die Funktionen aufruft. Das geht. Nur Programme die vermutlich mit dem VC6 übersetzt worden sind scheitern. Den Kode meiner DLL kann ich veröffentlichen. Da es sich aber um sicherheitsrelevanten Kode handelt, kann ich das nicht direkt im Forum tun.
    Übersetzen tue ich den Code mittels:
    cl Filter.c /TC /LD /MT /link /DEF:Filter.def /out:Filter.dll
    eventuell liegt ja hier schon der sprichwörtliche Hase begraben.



  • Hm... VC6-Apps wurden standardmäßig als MultiByte kompiliert, VS2005-Apps werden standardmäßig als Unicode kompiliert. Vielleicht gibt es hier inkonsistenzen?



  • Ich könnte es ja damit mal versuchen. Was muss ich dem Compiler als Schalter übergeben?



  • keine Ahnung, ich arbeite nie mit der Kommando-Zeile.



  • Ein #pragma setlocale("german")
    hat leider nix geholfen:)
    Sobald er aus einer Funktion zurück kommt kracht es:(



  • ?
    Was hat ein setlocale mit der breite von Zeichen zu tun?



  • was anderes brauchbares ließ sich in der Doku nicht finden:(



  • Wenn ich mal testweilse die 2. Lib nicht laden, dann stürtz er nicht ab:(
    gibt es an dem LoadLibrary was geheinissvolles?



  • Ne, eher nicht...

    Ist das was dringendes? Ich könnte es dir morgen vermutlich fixen, wenn du mir alle nötigen Daten zukommen lässt. Bezahlung nur bei Erfolg. Bei Interesse bitte eMail über's Profil.



  • nö ist nicht dringend. Könnte es was damit zu tun haben, das die DLL die ich aus meiner DLL aufrufe die selben Funktionen hat?



  • nein. Wie gesagt, kompilier deine DLL mal als Multibyte und nciht als unicode



  • So ich denke ich gabe es gefunden wie man es machen muss doch leider hilft es nichts.
    Ich habe die Präprozessordefinitionen laut benutzt.
    cl Filter.c /D_MBCS /TC /LD /MT /link /MANIFEST:NO /out:ctFilter.dll


Log in to reply