Programm starten auf Rechner ohne VisualStudio !?



  • ich wollte ein programm auf einem rechner starten auf dem kein visualstudio installiert ist.
    benutze mfc in einer gemeinsahmen dll. gibt es da nicht so ein kleines packet das ich auf dem rechner installieren kann damit ich das starten kann, oder kann ich da was in den projekteinstellungen ändern ??

    (ich benutze DLLs in meinem projekt, wegen der "statischen bibliothek" - option)



  • Für VC++ 6.0 gab's dieses hier: http://support.microsoft.com/default.aspx?scid=kb;en-us;259403

    Welche Versionen denn? Welches Windows, welches VC++?



  • Wenn ich dich richtig verstehe, muss du bei "Set Active Project Configuration" die "Release" Option auswählen.



  • kannst doch beim erstellen des MFC Projekts
    die Option Dll's einbinden.dann funktionierts bei mir immer



  • Für VC++ 7 sind das AFAIK folgende:

    MFC71.dll
    MSVCR71.dll
    MSVCP71.dll

    Kann sein, dass es da noch mehrere gibt, aber bei mir haben die gereicht... 🙂



  • sorry, ich benutze vs 6.0 !!
    ich hab mir jetzt erst mal die sachen von http://support.microsoft.com/default.aspx?scid=kb;en-us;259403 gezogen, weil ich jetzt weg muss. mal schauen wie's läuft.

    danke erstmal 😉



  • Ich weiß aber nicht, ob die aktuell ist. Im Zweifelsfall würd ich eher die Version aus dem letzten Service Pack nehmen.



  • mit dem packet gehts leider nicht. es kommt auch keine meldung nach der installation "Setup abgeschlossen" oder so. aber ich gehe mal davon aus das die dateien installiert sind.

    problem:
    die DLL "Mfc42d.dll" wurde nicht mitinstalliert. die ist im packet nicht drin.

    auf der website von microsoft hab ich sie auch nicht gefunden



  • Das ist die Debug-Version, die wird auch nicht installiert. Du kannst sie aber einfach ins gleiche Verzeichnis reinkopieren, in dem auch dein .exe liegt.

    EDIT: Hab grade nachgeschaut, die darf man nicht weitergeben. Also entweder linkst du sie statisch oder du verwendest nicht die Debug-Version.



  • lol, jetzt bin ich aber baff.

    erst mal: das hat geklappt.
    aber ich dachte immer wenn ich das einstelle mit der DLL dann kann ich keine eigenen DLLs mehr benutzen.

    na ja, dankeschön 😉



  • Hallo, ich habe im Prinzip das selbe Problem wie mein Vorschreiber.

    "Die Dynamic Link Library MFC42D.DLL wurde nicht gefunden."

    Wenn ich in den Projekteigenschaften einstelle, dass die MFC statisch gelinkt werden sollen, bekomme ich jedoch folgenden Linker-Error:

    msvcrtd.lib(MSVCRTD.dll) : error LNK2005: _exit bereits in libcmtd.lib(crt0dat.obj) definiert
    msvcrtd.lib(MSVCRTD.dll) : error LNK2005: _atof bereits in libcmtd.lib(atof.obj) definiert
    msvcrtd.lib(MSVCRTD.dll) : error LNK2005: __setmbcp bereits in libcmtd.lib(mbctype.obj) definiert
    LINK : warning LNK4098: Standardbibliothek "mfc42d.lib" steht in Konflikt mit anderen Bibliotheken; /NODEFAULT:Bibliothek verwenden
    LINK : warning LNK4098: Standardbibliothek "mfcs42d.lib" steht in Konflikt mit anderen Bibliotheken; /NODEFAULT:Bibliothek verwenden
    LINK : warning LNK4098: Standardbibliothek "msvcrtd.lib" steht in Konflikt mit anderen Bibliotheken; /NODEFAULT:Bibliothek verwenden
    Debug/Prog.exe : fatal error LNK1169: Ein oder mehrere mehrfach definierte Symbole gefunden
    

    Wo genau liegt hier das Problem und wie kann ich es beheben?

    Gruß, Thomas.



  • normalerweise gibt man nur die release-version weiter und nicht die debugversion



  • und zum problem:

    stell mal die c++ laufzeit bibliothek auch auf statisch linken. findest du irgendwo in den optionen 🤡 🤡



  • Habe jetzt in den Einstellungen mal ein paar zu ignorierende Bibliotheken eingestellt, zumindest gibt es jetzt nur noch Warnungen und keine Fehler mehr. 😃

    Ist es realistisch, dass meine Release-Version mit statisch gelinkter MFC nur 500kB groß ist (so groß wie die Debug-Version mit dynamischer MFC), während meine Debug-Version mit statischer MFC über 2 MB groß ist?

    ...
    LINK : warning LNK4098: Standardbibliothek "mfc42.lib" steht in Konflikt mit anderen Bibliotheken; /NODEFAULT:Bibliothek verwenden
    LINK : warning LNK4098: Standardbibliothek "mfcs42.lib" steht in Konflikt mit anderen Bibliotheken; /NODEFAULT:Bibliothek verwenden
    LINK : warning LNK4098: Standardbibliothek "libc.lib" steht in Konflikt mit anderen Bibliotheken; /NODEFAULT:Bibliothek verwenden
    LINK : warning LNK4049: Lokal definiertes Symbol "_exit" importiert
    LINK : warning LNK4049: Lokal definiertes Symbol "_atof" importiert
    LINK : warning LNK4049: Lokal definiertes Symbol "__setmbcp" importiert
    LINK : warning LNK4089: Alle Verweise auf "SHELL32.dll" wurden durch /OPT:REF verworfen
    
    Prog.exe - 0 Fehler, 64 Warnung(en)
    

    Wie muss ich den Tipp "/NODEFAULT:Bibliothek verwenden" verstehen? Wenn ich diese Bib dem Linker vorenthalte, dann gibts wieder Errors wegen unaufgelösten Symbolen.

    Danke für die Hilfe

    Gruß, Thomas.



  • Hab ne Mail bekommen, dass hier eine neue Antwort steht. Hat die Datenbank wohl gestern geschluckt. 😞

    Wäre schön, wenn derjenige nochmal kurz was schreiben könnte. 🙂

    Übrigens habe ich jetzt das Problem, dass die Release-Version beim Beenden mit einem Access-Failure abstürzt (bei dynamischer MFC funzt es), und zwar genau da, wo die Initialisierungsmethode der gesamten Anwendung nach der Behandlung von IDOK und IDCANCEL mit FALSE zurückkehrt. 😕

    Grüße, Thomas.



  • Servus,

    sicherlich ist es realistisch, dass dein Programm mit statisch gelinkter MFC und Release Version genauso groß ist, wie dein Programm mit dynamischer MFC in der Debug Version. In der Debug sind halt noch einige Debuginformationen enthalten, welches das ganze aufbläst. Eine genau Erklärung mit "Was, Wie, Wo, Warum?" findest du in der FAQ.

    Und wo ist jetzt dein eigentliches Problem? Du kannst keine eigenen Dlls in deinem Projekt verwenden, wenn du die Option "MFC statisch linken" einstellst? Ich rall das im Moment nicht, kann aber auch an einem akuten Schlafdefizit, mit übermäßigen Kaffeegenuß liegen. Es ist schön diese wechselnden Phasen zu erleben, zwischen Mündigkeit und das Warten darauf, das der Kaffee anfängt zu wirken.

    mfg
    Hellsgore


Anmelden zum Antworten