Exe auf NT4, Guru gesucht! :-)



  • Nach der Umstellung von VC6 auf den aktuellen VC++2005 läuft die Anwendung
    erst wieder nach der Installation des VCREDIST_X86.exe.
    Soweit mir auch verständlich und in Ordnung, da sie MFC und CRT installiert.

    Problem ist, dass es nicht unter NT4 läuft.
    Nach längerer Recherche ist mir auch klar warum (GetLangPathNameW)
    Folgende Schritte hätten ja vielleicht Abhilfe schaffen können:

    http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=163727&SiteID=1

    Ich bin genau der Anleitung gefolgt, bekomme beim compilieren aber einen Fehler:

    nothrownew.obj : warning LNK4006: "void * __cdecl operator new(unsigned int)" (?
    ?2@YAPAXI@Z) ist bereits in "thrownew.obj" definiert; zweite Definition wird ign
    oriert.
    LINK : error LNK1218: Warnung wird als Fehler interpretiert; es wurde keine Ausg
    abedatei generiert.
    link -lib -nologo -wx -out:build\intel\mt_obj\startup.lib @build\intel\m
    t_obj\startup.rsp
    wincrt0.obj : warning LNK4006: __aenvptr ist bereits in "wwincrt0.obj" definiert
    ; zweite Definition wird ignoriert.
    LINK : error LNK1218: Warnung wird als Fehler interpretiert; es wurde keine Ausg
    abedatei generiert.
    NMAKE : fatal error U1073: "build\intel\mt_obj\startup.lib" konnte nicht erstell
    t werden
    Stop.

    Please Help!



  • Hm... man sollte sich halt vorher Informieren 😉
    http://msdn2.microsoft.com/en-us/library/ms235435

    Siehe auch:
    http://blog.kalmbachnet.de/?postid=53

    Lösung: Linke statisch gegen die CRT/MFC und installiere min. IE5!



  • ja, ich habe die beiden seiten gelesen.

    jedoch...

    ..scheint es ja auch leute gegeben zu haben, die durch neukompilieren der crt
    die software auch auf NT4 zum laufen bekommen haben.
    Das wär für mich der optimale Weg, da dann nicht 2 verschiedene Versionen
    gebaut werden müssten.

    Problem ist nur, dass ich sie wegen des o.g. Fehlers nicht kompilieren kann 😞
    aber vllt. weiss ja noch jemand, wie man diesen operator-new warning wegbekommt.

    Notfalls, müsste ich das statische linken mal testen, wobei meinem Verständnis nach, doch dann da die Komponenten mit einkompiliert werden, oder?
    was zur folge hätte, dass die dateigrösse deutlich steigert, was wiederum bei den
    häufigen updates zu erhöhten traffic führt.

    Ausserdem lassen sich die ocx'en auch nicht registrieren und ich kann die ja nicht alle statisch linken.

    Thanks and so far,
    Smeagol



  • Prinzipiell kann man schon alles statisch linken...

    Der Aufwand die MFC/CRT neu zu kpompilieren ist immens. Du musst *vor allem* für alle CRT/MFC/ATL DLLs eigene Dateinamen vergeben!
    Michael Kaplan hat eigentlich eine gute Anleitung wie man das macht. Der Link war auch auf der MSDN-Forums-Seite.


Anmelden zum Antworten