Qt für zwei unterschiedliche Compiler gleichzeitig

Verschiedenes zu Qt
Antworten
MQ
Beiträge: 24
Registriert: 22. Oktober 2008 08:45

Qt für zwei unterschiedliche Compiler gleichzeitig

Beitrag 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
Volker75
Beiträge: 59
Registriert: 8. April 2009 21:04

Beitrag 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ß
MQ
Beiträge: 24
Registriert: 22. Oktober 2008 08:45

Beitrag 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
franzf
Beiträge: 3114
Registriert: 31. Mai 2006 11:15

Beitrag 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
SamFredericks
Beiträge: 14
Registriert: 19. April 2011 12:44

Beitrag 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
MQ
Beiträge: 24
Registriert: 22. Oktober 2008 08:45

Beitrag 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
Antworten