[solved] exe-Datei will nicht auf XP laufen

Verschiedenes zu Qt
cimbomgs
Beiträge: 70
Registriert: 21. August 2008 21:14

[solved] exe-Datei will nicht auf XP laufen

Beitrag von cimbomgs »

Hallo,

ich bin jetzt schon seit 3 Wochen auf der Suche nach einer Lösung, wie ich die von QT erstellte exe-Datei auf anderem Windows XP-Rechner zum laufen bekommen kann.

Ich habe alles versucht:
-DLL's in das gleiche Verzeichnis
-Manifest-Datei
-QT statisch

hat alles nichts gebracht.

Ich versuchte QT unter Eclipse, ich versuchte QT unter VS2005. Compilieren, debuggen und release erstellen alles wunderbar. Die Exe-Datei wird jedes Mal erstelt. ABER wenn ich veruscht die Exe-Datei auf ein anderes XP-Rechner zu starten, funktioniert nichts.


Habe auch alle nötigen Plug-ins installier:
-vcredist_x86
-.net framework
...

mit dem Programm "depends" habe ich die Exe-Datei geöffnet aber bringt auch nichts.

Unter Windows 2000 läuft die Exe-Datei, ich muss nur die benötigte DLL's in das gleiche Verzeichnis kopieren wie die Exe-Datei.

Habe schon in google natürlich auch nach Lösungen gesucht. Hier im Forum gab es auch schon mehrere Beiträge zum ähnlichen Problem aber ich habe keine Lösung finden können.

Was bringt mir ein SUPER QT, wenn ich die Exe-Datei auf andere Rechner nicht zum laufen bekomme.

Bitte sagt mir was ich noch machen kann..Hat jemand eine konkrete Lösung für das Problem?!

Vielen Dank
Cimbomgs
Zuletzt geändert von cimbomgs am 3. September 2008 09:24, insgesamt 1-mal geändert.
cimbomgs
Beiträge: 70
Registriert: 21. August 2008 21:14

Beitrag von cimbomgs »

ich habe folgende konfiguration ausgeführt:

configure -static -release

und wurde erfolgreich abgeschlosen. nun als ich danach "nmake" starte bekomme ich immer diesen Fehler.
...

cd assistant\ && "C:\Programme\Microsoft Visual Studio 8\VC\BIN\nmake.ex
e" -f Makefile

Microsoft (R) Program Maintenance Utility, Version 8.00.50727.762
Copyright (C) Microsoft Corporation. Alle Rechte vorbehalten.

"C:\Programme\Microsoft Visual Studio 8\VC\BIN\nmake.exe" -f Makefile.Re
lease

Microsoft (R) Program Maintenance Utility, Version 8.00.50727.762
Copyright (C) Microsoft Corporation. Alle Rechte vorbehalten.

link /LIBPATH:"c:\Qt\lib" /LIBPATH:"c:\Qt\lib" /NOLOGO /INCREMENTAL:NO /
MANIFEST /MANIFESTFILE:"tmp\obj\release_static\assistant.intermediate.manifest"
/SUBSYSTEM:WINDOWS "/MANIFESTDEPENDENCY:type='win32' name='Microsoft.Windows.Com
mon-Controls' version='6.0.0.0' publicKeyToken='6595b64144ccf1df' language='*' p
rocessorArchitecture='*'" /OUT:..\..\..\..\bin\assistant.exe @C:\DOKUME~1\Abdul\
LOKALE~1\Temp\nmA.tmp
main.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol ""class
QObject * __cdecl qt_plugin_instance_qsqlite(void)" (?qt_plugin_instance_qsqlite
@@YAPAVQObject@@XZ)" in Funktion ""public: __thiscall StaticqsqlitePluginInstanc
e::StaticqsqlitePluginInstance(void)" (??0StaticqsqlitePluginInstance@@QAE@XZ)".

..\..\..\..\bin\assistant.exe : fatal error LNK1120: 1 nicht aufgelöste externe
Verweise.
NMAKE : fatal error U1077: ""C:\Programme\Microsoft Visual Studio 8\VC\BIN\link.
EXE"": Rückgabe-Code "0x460"
Stop.
NMAKE : fatal error U1077: ""C:\Programme\Microsoft Visual Studio 8\VC\BIN\nmake
.exe"": Rückgabe-Code "0x2"
Stop.
NMAKE : fatal error U1077: "cd": Rückgabe-Code "0x2"
Stop.
NMAKE : fatal error U1077: "cd": Rückgabe-Code "0x2"
Stop.
NMAKE : fatal error U1077: "cd": Rückgabe-Code "0x2"
Stop.
NMAKE : fatal error U1077: "cd": Rückgabe-Code "0x2"
Stop.
ich habe VS2005 mit SP1 auf dem Rechner..weiß jemand woran es liegt?
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

'Funktioniert nicht' ist eine super Fehlermeldung ... :roll:

Und beim statischen kompilieren -> http://doc.trolltech.com/4.4/plugins-ho ... ic-plugins
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
cimbomgs
Beiträge: 70
Registriert: 21. August 2008 21:14

Beitrag von cimbomgs »

Christian81 hat geschrieben:'Funktioniert nicht' ist eine super Fehlermeldung ... :roll:

Und beim statischen kompilieren -> http://doc.trolltech.com/4.4/plugins-ho ... ic-plugins
so weit bin ich doch gar nicht gekommen :oops:

habe jetzt folgendes versucht:

1: nmake confclean
2: configure -qt-zlib -static -release -platform win32-msvc2005

wurde alles erfolgreich abgeschlossen. und nun wenn ich "nmake" starte. bekomme ich folgenden Fehler


"C:\Programme\Microsoft Visual Studio 8\VC\BIN\nmake.exe" -f Makefile.Re
lease

Microsoft (R) Program Maintenance Utility, Version 8.00.50727.762
Copyright (C) Microsoft Corporation. Alle Rechte vorbehalten.

cl -c -FIWebKit_pch.h -YuWebKit_pch.h -Fptmp\obj\release_static\QtWebKit
_pch.pch -nologo -Zm200 -Zc:wchar_t- -O2 -MD -GR -EHsc -DQT_THREAD_SUPPORT -DUNI
CODE -DWIN32 -DQT_LARGEFILE_SUPPORT -DBUILDING_QT__=1 -DUSE_SYSTEM_MALLOC -DNDEB
UG -DQT_NO_CAST_TO_ASCII -DQT_ASCII_CAST_WARNINGS -DQT3_SUPPORT -DQT_MOC_COMPAT
-D_USE_MATH_DEFINES -DBUILD_WEBKIT -DENABLE_ICONDATABASE=0 -DENABLE_XPATH=1 -DEN
ABLE_SVG=1 -DWTF_CHANGES=1 -DBUILDING_QT__ -DWTF_USE_JAVASCRIPTCORE_BINDINGS=1 -
DQT_NO_DEBUG -DQT_GUI_LIB -DQT_NETWORK_LIB -DQT_CORE_LIB -I"..\..\..\..\include\
QtCore" -I"..\..\..\..\include\QtCore" -I"..\..\..\..\include\QtNetwork" -I"..\.
.\..\..\include\QtNetwork" -I"..\..\..\..\include\QtGui" -I"..\..\..\..\include\
QtGui" -I"..\..\..\..\include" -I"..\WebKit\qt\Api" -I"..\JavaScriptCore" -I"..\
JavaScriptCore\kjs" -I"..\JavaScriptCore\bindings" -I"..\JavaScriptCore\bindings
\c" -I"..\JavaScriptCore\wtf" -I"..\JavaScriptCore\ForwardingHeaders" -I"." -I"F
orwardingHeaders" -I"platform" -I"platform\network" -I"platform\graphics" -I"loa
der" -I"page" -I"css" -I"dom" -I"bridge" -I"editing" -I"rendering" -I"history" -
I"xml" -I"html" -I"plugins" -I"..\..\..\..\include\QtWebKit" -I"tmp\rcc\release_
static" -I"tmp" -I"generated" -I"tmp" -I"..\JavaScriptCore" -I"..\JavaScriptCore
\kjs" -I"..\JavaScriptCore\bindings" -I"..\JavaScriptCore\bindings\c" -I"..\Java
ScriptCore\wtf" -I"..\JavaScriptCore\bindings\qt" -I"..\JavaScriptCore\os-win32"
-I"..\JavaScriptCore\pcre" -I"c:\Qt\src\3rdparty\webkit\WebKitBuild\Debug\JavaS
criptCore\kjs\tmp" -I"platform\qt" -I"platform\network\qt" -I"platform\graphics\
qt" -I"platform\graphics\svg\qt" -I"loader\qt" -I"page\qt" -I"..\WebKit\qt\WebCo
reSupport" -I"..\WebKit\qt\Api" -I"." -I"ForwardingHeaders" -I"..\..\webkit" -I"
..\JavaScriptCore\kjs" -I"..\JavaScriptCore\bindings" -I"platform" -I"platform\n
etwork" -I"platform\graphics" -I"platform\graphics\svg" -I"platform\graphics\svg
\filters" -I"loader" -I"loader\icon" -I"css" -I"dom" -I"page" -I"bridge" -I"edit
ing" -I"rendering" -I"history" -I"xml" -I"html" -I"bindings\js" -I"ksvg2" -I"ksv
g2\css" -I"ksvg2\svg" -I"ksvg2\misc" -I"ksvg2\events" -I"platform\image-decoders
" -I"c:\Qt\include\ActiveQt" -I"tmp\moc\release_static" -I"." -I"..\..\..\..\mks
pecs\win32-msvc2005" -Fotmp\obj\release_static\runtime.obj ..\JavaScriptCore\bin
dings\runtime.cpp
runtime.cpp
..\JavaScriptCore\bindings\runtime.cpp : fatal error C1853: Die vorkompilierte H
eader-Datei "tmp\obj\release_static\QtWebKit_pch.pch" stammt von einer früheren
Version des Compilers, oder der vorkompilierte Header stammt von C++, und Sie ve
rwenden Ihn von C (oder umgekehrt)
NMAKE : fatal error U1077: ""C:\Programme\Microsoft Visual Studio 8\VC\BIN\cl.EX
E"": Rückgabe-Code "0x2"
Stop.
NMAKE : fatal error U1077: ""C:\Programme\Microsoft Visual Studio 8\VC\BIN\nmake
.exe"": Rückgabe-Code "0x2"
Stop.
NMAKE : fatal error U1077: "cd": Rückgabe-Code "0x2"
Stop.
[/quote]
cimbomgs
Beiträge: 70
Registriert: 21. August 2008 21:14

Beitrag von cimbomgs »

ich bekomme nur Fehlermeldungen bei der Konfiguration:

habe jetz folgendes versucht:

1.nmake confclean
2.nmake clean
3.configure -qt-zlib -static -release -platform win32-msvc2005
4.nmake

jetzt bekomme ich diesen Fehler
cl -c -nologo -Zm200 -Zc:wchar_t- -Zi -MDd -W3 -w34100 -w34189 -GR -EHsc
-DUNICODE -DWIN32 -DQT_LARGEFILE_SUPPORT -DQT_CLUCENE_SUPPORT -DUSE_STATIC_SQLI
TE_PLUGIN -DQT_SQL_LIB -DQT_XML_LIB -DQT_GUI_LIB -DQT_NETWORK_LIB -DQT_CORE_LIB
-DQT_THREAD_SUPPORT -I"..\..\..\..\include\QtCore" -I"..\..\..\..\include\QtCore
" -I"..\..\..\..\include\QtNetwork" -I"..\..\..\..\include\QtNetwork" -I"..\..\.
.\..\include\QtGui" -I"..\..\..\..\include\QtGui" -I"..\..\..\..\include\QtXml"
-I"..\..\..\..\include\QtXml" -I"..\..\..\..\include\QtSql" -I"..\..\..\..\inclu
de\QtSql" -I"..\..\..\..\include" -I"..\..\..\..\include\QtHelp" -I"..\..\..\..\
include\QtHelp" -I"..\..\..\shared\fontpanel" -I"c:\Qt\include\ActiveQt" -I"tmp\
moc\debug_static" -I"." -I"..\..\..\..\mkspecs\win32-msvc2005" -Fotmp\obj\debug_
static\ @C:\DOKUME~1\xy\LOKALE~1\Temp\nm135.tmp
qrc_assistant.cpp
link /LIBPATH:"c:\Qt\lib" /LIBPATH:"c:\Qt\lib" /NOLOGO /DEBUG /MANIFEST
/MANIFESTFILE:"tmp\obj\debug_static\assistant.intermediate.manifest" /SUBSYSTEM:
WINDOWS "/MANIFESTDEPENDENCY:type='win32' name='Microsoft.Windows.Common-Control
s' version='6.0.0.0' publicKeyToken='6595b64144ccf1df' language='*' processorArc
hitecture='*'" /OUT:..\..\..\..\bin\assistant.exe @C:\DOKUME~1\xy\LOKALE~1\Te
mp\nm136.tmp
main.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol ""class
QObject * __cdecl qt_plugin_instance_qsqlite(void)" (?qt_plugin_instance_qsqlite
@@YAPAVQObject@@XZ)" in Funktion ""public: __thiscall StaticqsqlitePluginInstanc
e::StaticqsqlitePluginInstance(void)" (??0StaticqsqlitePluginInstance@@QAE@XZ)".

..\..\..\..\bin\assistant.exe : fatal error LNK1120: 1 nicht aufgelöste externe
Verweise.
NMAKE : fatal error U1077: ""C:\Programme\Microsoft Visual Studio 8\VC\BIN\link.
EXE"": Rückgabe-Code "0x460"
Stop.
NMAKE : fatal error U1077: ""C:\Programme\Microsoft Visual Studio 8\VC\BIN\nmake
.exe"": Rückgabe-Code "0x2"
Stop.
NMAKE : fatal error U1077: "cd": Rückgabe-Code "0x2"
Stop.
NMAKE : fatal error U1077: "cd": Rückgabe-Code "0x2"
Stop.
NMAKE : fatal error U1077: "cd": Rückgabe-Code "0x2"
Stop.
NMAKE : fatal error U1077: "cd": Rückgabe-Code "0x2"
Stop.
:cry: :cry: :cry: :cry: :cry:
cimbomgs
Beiträge: 70
Registriert: 21. August 2008 21:14

Beitrag von cimbomgs »

benutzt denn sonst niemand VS2005 mit QT?

wie habt macht ihr es, dass die exe-Datei auch auf andere XP-Rechner laufen?


wenn ich diese Woche noch keine Lösung finde, werde ich mit Java anfangen.


Bin für jede Hilfe sehr dankbar.. :idea:
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

Doch, aber wohl niemand statisch inklusive sqlite.
Deine statischen Qt-Libs sind trotz des aufgetretenen Fehlers schon vorhanden.
Und es wurde immer noch nicht gesagt was mit "funktioniert nicht" genau gemeint ist... :roll:
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
RHBaum
Beiträge: 1436
Registriert: 17. Juni 2005 09:58

Beitrag von RHBaum »

benutzt denn sonst niemand VS2005 mit QT?
doch, aber wir nutzen die QT dynamisch.
die kommerzielle version unterstuetzt das statische linken sowieso ned wirklich...


warum willst du das unbedingt statisch haben, und ned dynamisch ?

zu deinem 1.post:
was bringt er, wenn deine App auf dem anderen rechner in ner console startest ??? dann bringt er doch normal ne meldung auf stderr welche dll fehlt ...


ciao ...
cimbomgs
Beiträge: 70
Registriert: 21. August 2008 21:14

Beitrag von cimbomgs »

RHBaum hat geschrieben:
benutzt denn sonst niemand VS2005 mit QT?
doch, aber wir nutzen die QT dynamisch.
die kommerzielle version unterstuetzt das statische linken sowieso ned wirklich...


warum willst du das unbedingt statisch haben, und ned dynamisch ?
weil ich in vielen Foren gelesen habe, dass ich es statisch habe muss damit die Exe-Datei auch auf andere XP-Rechner läuft.

wie schon gesagt, ich habe alle notwendigen DLL's, Manifest-Dateien und sonst was alles gebraucht wird in das Verzeichnis mitkopiert aber am Ende bekomme ich eine Fehlermeldung, dass das Programm nicht geöffnet werden kann.
cimbomgs
Beiträge: 70
Registriert: 21. August 2008 21:14

Beitrag von cimbomgs »

Christian81 hat geschrieben:Doch, aber wohl niemand statisch inklusive sqlite.
Deine statischen Qt-Libs sind trotz des aufgetretenen Fehlers schon vorhanden.
Und es wurde immer noch nicht gesagt was mit "funktioniert nicht" genau gemeint ist... :roll:
"funktionert nicht" bedeutet folgendes:

ich will das einfachste Programm was existiert als Exe-Datei unter andere XP-Rechner zum laufen bekommen.

Quellcode lautet:

Code: Alles auswählen

#include <QtGui/QApplication>
#include "hallo.h"
#include <QLabel>

int main(int argc, char *argv[])
{
	QApplication a(argc, argv);
	hallo w;
	
	QLabel *label = new QLabel("Hallo QT!");

	a.connect(&a, SIGNAL(lastWindowClosed()), &a, SLOT(quit()));
	
	label->show();

	return a.exec();
}
ein ganz einfaches Hallo QT Programm.


auf dem XP-Rechner, wo QT installiert ist kann ich ohne Probleme die Exe-Datei starten. Nun will ich aber das Programm auch auf andere XP-Rechner zum laufen bekommen.

Wie gesagt, alle DLL's und sonst was gebrauch wird, befindet sich im selben Verzeichnis wie die Exe-Datei. Wenn ich die Exe-Datei starte kommt dieses Fehler:
Bild

und wenn ich die Datei in Dependency Walker öffne, zeigt es mir diese Fehler an:
Error: The Side-by-Side configuration information for "g:\hallo\debug\HALLO.EXE" contains errors. Diese Anwendung konnte nicht gestartet werden, weil die Anwenungskonfiguration nicht korrekt ist. Zur Problembehebung sollten Sie die Anwendung neu installieren (14001).
Error: The Side-by-Side configuration information for "g:\hallo\debug\QTCORED4.DLL" contains errors. Diese Anwendung konnte nicht gestartet werden, weil die Anwenungskonfiguration nicht korrekt ist. Zur Problembehebung sollten Sie die Anwendung neu installieren (14001).
Error: The Side-by-Side configuration information for "g:\hallo\debug\QTGUID4.DLL" contains errors. Diese Anwendung konnte nicht gestartet werden, weil die Anwenungskonfiguration nicht korrekt ist. Zur Problembehebung sollten Sie die Anwendung neu installieren (14001).
Warning: At least one module has an unresolved import due to a missing export function in a delay-load dependent module.
Zuletzt geändert von cimbomgs am 2. September 2008 18:24, insgesamt 1-mal geändert.
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

vcredist_x86.exe auf dem Rechner nicht installiert und oder/falsche Version oder ganz einfach nicht im Release-Modus gebaut. Hatten wir schon des öfteren.
Manifest-Dateien muss man nicht kopieren.
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
cimbomgs
Beiträge: 70
Registriert: 21. August 2008 21:14

Beitrag von cimbomgs »

Christian81 hat geschrieben:vcredist_x86.exe auf dem Rechner nicht installiert und oder/falsche Version oder ganz einfach nicht im Release-Modus gebaut. Hatten wir schon des öfteren.
Manifest-Dateien muss man nicht kopieren.
vcredist_x86.exe ist installiert und ist die richtige version :)

was genau meinst Du mit "nicht im Release-Modus gebaut"?!

danke
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

Dein Executable darf nict im Debug-Mode gebaut sein. Wie gesagt - das hatten wir schon zig Mal. Dependency Walker kann Dir dabei helfen.
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
RHBaum
Beiträge: 1436
Registriert: 17. Juni 2005 09:58

Beitrag von RHBaum »

Wenn im Dependency Walker schaust, zeigt er dr doch alle dlls an die er denkt zu brauchen :-)
wichtig dabei ist auf die namen genau zu achten .... !

QTCORED4.DLL das D in der Dll bedeutet wirklich, das es die debug version der dll ist, also diese mit den ganzen symboltabellen etc ....

Du kriegst natuerlich auch die debug version deines programmes auf dem anderen PC zum laufen, in dem die ganzen debug dlls mitlieferst (die crt ned vergessen, die ist meist auf pcs ohne entwicklungsumgebung ned dabei)
Aber das ist sicher ned sinn der sache, die brauchst wirklich nur zum debuggen :-)

statisch linken macht nur sinn, wenn DU wirklich willst das dein programm mit der reinen exe gestartet werden soll, ohne irgendwie ne dll anzuziehen. Macht bei den wenigsten programmen Sinn, gibt aber wie immer spezielle ausnahmen.
Aber selbst modular bekomm man recht einfach zu installierende systeme hin, wir haben hier SW die zieht ca 30 dlls an, inklusive qt und den runtimes. Trotzdem kann man die auf der cd und auf dem usb stick starten, ohne das irgendwas installiert wurde.
Und selbst bei der von den usern so geliebten "manuellen installation hinter dem ruecken des setup programms" muss der user eben nen verzeichniss statt ner einzelnen exe kopieren :-)

Kopf hoch, mit der zeit kriegst nen gefuehl fuer, was so nen binary braucht :-) spaetestens wennst das erste setup fuer x windows versionen fuer dein proggie mal gebaut gebaut hasst ^^

Ciao ...
cimbomgs
Beiträge: 70
Registriert: 21. August 2008 21:14

Beitrag von cimbomgs »

Hallo RHBaum,

wie gasagt an DLL's liegt es nicht. Ich kopiere alle DLL's in das Verzeichnis wo die Exe-Datei ist.

Dependency Walker sagt das alle DLL's ok sind aber bekomme die Fehlermeldung was ich weiter oben geschrieben habe..

Könnt ihr mir nicht sagen mit welchen Optionen ich die configure.exe starten muss?!

Mach ich vielleicht was falsch bei der Compilierung?
Ich erstelle unter Visual Studio 2005 ein neues QT-Projekt. Nachdem ich das Quellcode geschieben habe, klicke ich einfach RUN und Visual Studio2005 erstellt mir alles.

So schwer kann das doch alles nicht sein :cry:


@Christian81
Dein Executable darf nict im Debug-Mode gebaut sein. Wie gesagt - das hatten wir schon zig Mal. Dependency Walker kann Dir dabei helfen.
habe deine andere Beiträge gelesen, aber schlauer bin ich nicht geworden. Es wäre echt schön wenn Du beschreiben könntest, wie man die Exe-Datei in "nicht debug-mode" baut.
Wie genau kann mir Dependency Walker helfen? Es zeigt mir nur Fehler an, was ich weiter oben als Zitat eingefügt habe
Antworten