Die anwendung konnte nicht gestartet werden weil...
-
Hallo.
Habe eine MFC Exe geschrieben, diese zieht eine MFC DLL an, ebenfalls selber geschrieben. Das Programm läuft, allerdings nur auf meinem eigenen PC. Auf nem anderen Rechner erscheint folgender Fehlertext:Die Anwendung konnte nicht gestartet werden weil die Anwendungskonfiguration nicht korrekt ist.
Dank der Suchefunktion habe ich herausbekommen, dass man dies unter anderem dadurch lösen kann wenn man in den Projekteinstellungen unter Verwendung von MFC auf "MFC in einer Statischen Bibliothek verwenden" umstellt.
Diese habe ich getan bei meiner .exe. Danach bekam ich einen anderen Fehler: "Die Anwendung konnte nicht richtig initialisiert werden". Ein andere Versuch die Einstellung auf "Windows-Standardbibliotheken verwenden" brachte den selben Effekt.
So nun dachte ich vieleicht muss ich meine selbst geschriebene DLL auch noch darauf umstellen. Doch wenn ich das mache erhalte ich beim kompilieren einen Fehler.
fatal error LNK1104: Datei "libboost_serialization-vc90-mt-sgd-1_39.lib" kann nicht geöffnet werden.
Ich verwende boost, die angegebene Datei habe ich nicht gefunden. Nun frage ich mich aber wieso benötige ich diese Datei nicht wenn ich diese Einstellung nicht wähle. Und wieso fehlt die Datei überhaupt?
Kann mir da jemand helfen, damit ich das Programm auf anderen Rechnern zum laufen bekomme.
-
c++ user schrieb:
Habe eine MFC Exe geschrieben, diese zieht eine MFC DLL an
Schöne Formulierung. Wie heißt deine DLL denn, jacke.dll?

Sieh dir mal diesen Screencast an, vielleicht hilft der schon weiter:
http://blog.kalmbach-software.de/de/2008/03/05/wie-man-statisch-gegen-die-c-runtime-crt-linkt/
-
Liefere einfach die Installatonsdatei für die MFC mit.
Nennt sich vcredist_x86.exe.
-
Hallo.
Nein Rock.dll

Genau nach dem Link bin ich vorgegangen. Aber das hat ja nicht funktioniert. Genau wie ich geschrieben habe.
-
Liefere einfach die Installatonsdatei für die MFC mit.
Das ist aber grad die schlechteste Lösung. Da die Exe auf viele Produktionsrechnern drauf kommt. Und das dann ewig oft zu installieren kann/darf/soll nicht sein.
-
Kannst auch die Dll's mitliefern
C:\Programme\Microsoft Visual Studio 9.0\VC\redist\x86
Einfach den entsprechenden Ordner in dein Programmverzeichnis kopieren.
EDIT: Wurde übrigens schon tausendmal erklärt, vielleicht solltest du mal Google benutzen.
-
Wurde übrigens schon tausendmal erklärt, vielleicht solltest du mal Google benutzen.
Wie ich den Satz hasse. Ich habe gegoogelt. Ich will/kann/soll/darf aber nicht die DLLs mitliefern. Egal wie auch immer. Die Exe und die DLL muss auf den Rechner kopiert werden und gut.
Nochmals zu dieser Frage:
Ich verwende boost, die angegebene Datei habe ich nicht gefunden. Nun frage ich mich aber wieso benötige ich diese Datei nicht wenn ich diese Einstellung nicht wähle. Und wieso fehlt die Datei überhaupt?
-
c++ user schrieb:
Wurde übrigens schon tausendmal erklärt, vielleicht solltest du mal Google benutzen.
Wie ich den Satz hasse. Ich habe gegoogelt. Ich will/kann/soll/darf aber nicht die DLLs mitliefern. Egal wie auch immer. Die Exe und die DLL muss auf den Rechner kopiert werden und gut.
Sorry, das war aus deinem Beitrag aber nicht ersichtlich, dass du die nicht verwenden darfst.

c++ user schrieb:
Nochmals zu dieser Frage:
Ich verwende boost, die angegebene Datei habe ich nicht gefunden. Nun frage ich mich aber wieso benötige ich diese Datei nicht wenn ich diese Einstellung nicht wähle. Und wieso fehlt die Datei überhaupt?
Also der Fehler sieht mir danach aus, dass du diese Lib eingetragen hast und sie halt nicht existiert. Vielleicht solltest du mal schauen, welche du ansonsten linken solltest. Ansonsten wüsste ich nicht woran das liegen könnte. Kenne mich mit boost auch nicht aus.
-
Also der Fehler sieht mir danach aus, dass du diese Lib eingetragen hast und sie halt nicht existiert.
Ich habe die Lib nicht eingetragen. Ich habe nur die komplette Boost in mein Projekt eingebunden. Wieso er aber gerade die Lib nicht findet wenn ich statische Linke und sonst gibt es keinen Fehler verstehe ich nicht.
-
Ich kenn mich mit Bosst zu wengi aus, aber grundsätzlich müssen externe Bibliotheken genau in dem selben Modus kompiliert sein, den Du auch verwenden möchtest.
Willst Du als CRT in shared DLLs muss die Lib auch so kompiliert sein. Willst Du eine statische CRT muss es die LIB auch wollen.
Entsprechend ist es nicht unüblich, dass eine andere LIB verlangt wird, wenn Du Dein Projekt umstellst. Evtl. hast Du bei Erzeugen der Boost Libs diese Lib nicht mit erzeugen lassen.
-
Evtl. hast Du bei Erzeugen der Boost Libs diese Lib nicht mit erzeugen lassen.
Hm. Ich kann boost eigentlich nicht auswählen was erzeugt wird. Hierzu gibt es nur eine Anleitung wie man das ganze übersetzt und fertig.
-
So habs rausbekommen es funktioniert jetzt.
Wenn man boost übersetzt kann man angeben welche Libs übersetzt werden sollen. Hier gibt es nun eine Option mit der man mitteilt das auch Libs übersetzt werden sollen für statisches Linken.