LNK1112 Error mit Qt5 für VS2012

Verschiedenes zu Qt
Antworten
MADsCIENTIST

LNK1112 Error mit Qt5 für VS2012

Beitrag von MADsCIENTIST »

Hallo,

ich habe ein Problem mit meiner aktuellen Qt5-Version, welche ich eigens für VS2012 über die x64-Native-Tools-Command-Prompt kompiliert habe.

Dabei erhalte ich beim Kompilieren eines neu angelegten Anwendungsprojektes folgende Meldung:
Qt5Widgetsd.lib(Qt5Widgetsd.dll) : fatal error LNK1112: Modul-Computertyp "x64" steht in Konflikt mit dem Zielcomputertyp "X86".

PS: Ich verwende außerdem das Qt5-Addin für VS2012!

Folgenden Befehl habe ich zum Builden von Qt verwendet (Environment-Variables habe ich natürlich vorher gesetzt gehabt):
configure -debug-and-release -opensource -nomake demos -nomake examples -platform win32-msvc2012

Hoffe jemand kennt eine Lösung!


Bedanke für sinnvolle Hilfe schon mal im Voraus.
Zuletzt geändert von MADsCIENTIST am 22. Januar 2013 23:23, insgesamt 1-mal geändert.
MADsCIENTIST

Re: LNK1112 mit Qt5 für VS2012

Beitrag von MADsCIENTIST »

Keiner eine Idee?
brax
Beiträge: 208
Registriert: 11. Mai 2010 11:22

Re: LNK1112 Error mit Qt5 für VS2012

Beitrag von brax »

Die Fehlermeldung sagt, dass Du versuchst Deine Anwendung als 32Bit Executable zu kompilieren. Da Du aber, wie Du ja selbst sagst, Qt als 64Bit kompiliert hast, geht das schief.
Also
Modul-Computertyp "x64" => Qt ist x64
Zielcomputertyp "X86" => Anwendung soll als x86 kompiliert werden.

Es sollte nun reichen, wenn Du im Visual Studio als Konfiguration "x64" auswählst. Schau einfach in der Toolbar nach der ComboBox in der "Win32" steht. Dort kannst Du auch x64 auswählen. Wenn nicht, dann wähle (auch in der ComboBox) "Configuration Manager" (bzw. den deutschen Namen davon). In dem Fenster wählst Du rechts oben aus der Combobox ("Active solution platform") den Eintrag "<New...>" aus. In dem Fenster wählst Du dann oben "x64" aus und lässt die untere ComboBox unverändert. Dann sollte es eigentlich funktionieren.
MADsCIENTIST

Re: LNK1112 Error mit Qt5 für VS2012

Beitrag von MADsCIENTIST »

Also, hätte es natürlich noch oben in der Beschreibung mit angeben müssen aber ich habe es bereits auf "x64" (Debug) gestellt gehabt.
Nur bekomme ich dadurch folgende Fehlermeldung:

"Der folgende Fehler trat auf:
Es ist keine gültige Qt-Version für die Plattform x64 diesem Projekt zugeordnet.
Bitte wählen Sie eine existierende Qt Version in den Qt-Projekteinstellungen."

Sollte ja dann einfach heißen, das mein Qt anscheinend nicht für x64 kompiliert wurde oder?
Für das Builden von Qt hatte ich ja den Befehl "-platform win32-msvc2012" mit angegeben. Liegt es vielleicht daran?
brax
Beiträge: 208
Registriert: 11. Mai 2010 11:22

Re: LNK1112 Error mit Qt5 für VS2012

Beitrag von brax »

An der Stelle darfst Du dem MS-Compiler vertrauen, wenn er das kompilieren und linken kann, ist dein Qt-Build in Ordnung.

Und laut der vorher geposteten Fehlermeldung hattest Du das auf keinen Fall richtig eingestellt. Die Meldung ist doch sehr eindeutig...

Wann kommt denn diese seltsame Fehlermedung? Vom VisualStudio kommt die auf keinen Fall... Versuchst Du vielleicht zu starten, ohne dass die Qt-DLLs per PATH-Variable erreichbar sind (oder im Verzeichnis der .exe liegen)?
MADsCIENTIST

Re: LNK1112 Error mit Qt5 für VS2012

Beitrag von MADsCIENTIST »

Diese seltsame Fehlermeldung kommt genau dann, wenn ich z. B. direkt nach dem Anlegen eines neuen Qt-Application Projektes x64 ausgewählt habe und auf "Erstellen" gehe!
Es wird nicht mal ein Ordner für die x64 Version erstellt, demnach brauche ich auch keine DLL's irgendwo hin kopieren!


Vielleicht hilft ja mal eine Liste all meiner Schritte nach dem Builden:
1. Umgebungsvariablen festlegen:
-> User variables:
- QTDIR => C:\Qt\5.0.0_msvc2012\qtbase
-> System variables:
- Path => %QTDIR%\bin

2. QT5-Addin Einstellungen in VS2012 vornehmen:
-> Qt Optionen => Hinzufügen => C:\Qt\5.0.0_msvc2012\qtbase

3. Testprojekt in VS2012 anlegen
-> Datei => Neues Projekt
=> Qt Application
=> Projekteinstellungen: "Standard" (Core, GUI, Widgets)
=> QMainWindow
-> Anschließend unter "Konfigurations-Manager"
=> <Neu...>
=> Neue Plattform: x64; Einstellungen kopieren von Win32

So und dann kommt halt jetzt diese Meldung!


Ach ja, hier die durch das Qt-Addin automatisch vorgenommenen Projekteinstellungen:
=> C/C++
$(QTDIR)\include;
$(ConfigurationName);
$(QTDIR)\include\QtCore;
$(QTDIR)\include\QtGui;
$(QTDIR)\include\QtWidgets;

=> Linker (Allgemein)
$(QTDIR)\lib

=> Linker (Eingabe) [Debug]
qtmaind.lib;
Qt5Cored.lib;
Qt5Guid.lib;
Qt5Widgetsd.lib;

=> Linker (Eingabe) [Release]
qtmain.lib;
Qt5Core.lib;
Qt5Gui.lib;
Qt5Widgets.lib;
brax
Beiträge: 208
Registriert: 11. Mai 2010 11:22

Re: LNK1112 Error mit Qt5 für VS2012

Beitrag von brax »

Scheint wohl doch ein Problem des Qt-Plugins zu sein. Ich benutze das dämliche Ding nicht, weil es eh nur Macken hat (bringt z.B. in großen Solutions den Debugger zum Absturz). Versuche mal einfach Dein VS-Projekt auf der Kommandozeile per qmake zu erstellen und schau, ob es dann funktioniert.

Das VS ändert übrigens nicht automatisch das Ausgabeverzeichnis, wenn Du die neue Konfiguration anlegst, es ist weiterhin "release" bzw. "debug" und nicht irgendwas mit x64.

Abgesehen davon verwirren mich Deine Aussagen etwas. Ist die Fehlermeldung aus Deinem ursprünglichen Post jetzt weg (conflicting target)?
MADsCIENTIST

Re: LNK1112 Error mit Qt5 für VS2012

Beitrag von MADsCIENTIST »

Ja, die Meldung mit dem Conflicting-Target ist weg, weil ich doch auf x86 dort gestellt hatte^^

Aber es bleibt dennoch bei der Meldung, das anscheinend keine gültige Qt-Version vorliegt, wenn ich auf x64 stelle!

PS: Ich habe meine Qt(4)-Programme bislang mithilfe der mo-/ui- und rc-compiler abgewickelt... ist zwar aufwendiger aber es erfüllt seinen Zweck :D
Da freut man sich mal auf ein Addin für VS2012 und dann wird man wieder nur enttäuscht -.-"
Antworten