Seite 1 von 1

Qt für zwei unterschiedliche Compiler gleichzeitig

Verfasst: 10. Mai 2011 14:15
von MQ
Hallo,

bisher konnte ich keine brauchbaren Hinweise dazu finden, wie ich zwei Qt-Versionen sauber parallel installieren muss.

Normalerweise verwende ich den MinGW unter WinXP. Für ein anderes Projekt brauche ich aber Visual Studio 2008.

Inzwischen compiliert der MS-Compiler durch, doch erhalte ich beim Start des Endproduktes die Fehlermeldung, dass der Prozedureinspungspunkt in der QtCored4.dll nicht gefunden werden kann.

Im Netz findet man den Hinweis, dass es daran liegen könnte, dess evtl. die "falsche" QtCored4.dll geladen wurde, bzw. mehrere gleichlautende DLLs im Pfad liegen.

Kann das sein?

Wie installieren ich sauber zwei unterschiedliche Qt-Versionen, einmal für den MinGW und einmal für VS2008 parallel auf einem System, ohne dass sich da was in die Quere kommt?

Gruß

MQ

Verfasst: 10. Mai 2011 15:54
von Volker75
Hallo,

ich kenne leider nicht die "richtige" Antwort, aber (Qt-)Programme suchen die dll zuerst im eingenen Verzeichnis. Wenn es dort nicht gefunden wird, dann werden die angegebenen pfade (einstellungen von "path") durchsucht.

Demnach müsste folgende Lösung sauber funktionieren:
Die mit mingw erstellten dll Dateien in das Verzeichnis kopieren, in der auch die exe liegt, die mit mingw übersetzt wurde.

Die mit visiual erstellten dll Dateien in das Verzeichnis kopieren, in der auch die exe liegt, die mit visual übersetzt wurde.

(Genaugenommen kann eine Variante gespart werden, da der PATH ja entwerder zu den mingw oder den Visual Dateien verzweigen müsste.)


Gruß

Verfasst: 10. Mai 2011 17:05
von MQ
Volker75 hat geschrieben:Hallo,

Die mit visiual erstellten dll Dateien in das Verzeichnis kopieren, in der auch die exe liegt, die mit visual übersetzt wurde.

(Genaugenommen kann eine Variante gespart werden, da der PATH ja entwerder zu den mingw oder den Visual Dateien verzweigen müsste.)
Ich möchte vermeiden, dass ich DLLs in jedes Verzeichnis reinkopieren muss, wo eine Anwendung liegt.

Leider sind die Qt-DLLs für MinGW und für MSVC++ auch verschieden. Damit lassen sie sich nicht mischen.

Inzwischen habe ich einen Workaround, in dem ich auf meinem Läppi die MinGW-Version entfernt habe und nur die MSVC++-Version rennt. Das ist aber keine Dauerlösung.

Gruß

MQ

Verfasst: 10. Mai 2011 17:24
von franzf
Als erstes solltest du ALLES aus dem PATH entfernen, wo auch Qt drinnen liegt. Dann kannst du dir Qt für MinGW und VS2008 installieren (gibt ja direkt Binary-Installer dafür). Für das jeweilige Projekt setzt du in den Projektsettings die entsprechenden Qt-Dirs in den PATH.
Gestartet werden die Programme dann mittels einer batch-Datei, die den PATH um die passenden Einträge erweitert. PATH wird unter Windows hoffentlich von vorne nach hinten nach den Abhängigkeiten durchsucht, drum setz deinen speziellen Pfad an den Anfang von PATH.

Ich hab aber kein Windows, bin glücklicher Linux.Nutzer

Verfasst: 11. Mai 2011 08:15
von SamFredericks
Inzwischen compiliert der MS-Compiler durch, doch erhalte ich beim Start des Endproduktes die Fehlermeldung, dass der Prozedureinspungspunkt in der QtCored4.dll nicht gefunden werden kann.
Hatte selbiges Problem. Beim Start des Qt-Programmes wird nur der erste Pfad der PATH Variable aus dem Systemvariablen benutzt - irgendwie.
Jedenfalls wenn du in den Systemvariablen deinen jeweiligen Qt-Pfad an den Anfang der PATH-Variablen und der LIB-Variablen setzt funktioniert es, aber nur für die jeweilige Qt-Version.

Daher habe ich mir wie oben beschrieben eine *.bat-Datei erstellt wo die PATH und LIB erweitert werden:

Code: Alles auswählen

@set PATH=C:\Qt\4.7.2-mingw\bin;%PATH%
@set LIB=C:\Qt\4.7.2-mingw\lib;%LIB%
app.exe

Verfasst: 11. Mai 2011 09:47
von MQ
Hallo,

SamFredericks hat geschrieben:Hatte selbiges Problem. Beim Start des Qt-Programmes wird nur der erste Pfad der PATH Variable aus dem Systemvariablen benutzt - irgendwie.
Jedenfalls wenn du in den Systemvariablen deinen jeweiligen Qt-Pfad an den Anfang der PATH-Variablen und der LIB-Variablen setzt funktioniert es, aber nur für die jeweilige Qt-Version.

[/code]
Das hatte ich gestern auf meinem Deskop-Rechner probiert. Hat leider nicht geklappt. Es wurde alle DLLs etc gefunden, doch brach der Start der erstellten Anwendung sinngemäß mit der Fehlermeldung ab, dass die Anwendung nicht korrekt initialisiert werden konnte.

Das war der Grund das beim Läppi mal so zu probieren, dass ich die MinGW-Version komplett entferne. Dann hat's klappt.

Es handelt sich bei meinem Problem also nicht um was Grundlegendes sondern "nur" um irgendwelche Pfadeinstellungen.

Ich werde jetzt mal die Umgebungsvariablen des Desktop-REchners bereinigen. Ich habe gesehen, dass da viel Müll inzwischen drin steht.

Wenn ich Eure Antworten so sehe, dann bleibt für eine parallele Installation von Qt für zwei unterschiedliche Compiler nur die Möglichkeit, mit Batch-Dateien o.ä. immer die Pfadangaben zu setzen?

Gruß

MQ