2013-08-15 20 views
6

Próbuję przypomnieć sobie niektóre C++, a także dowiedzieć się o Qt.C++ Qt: undefined odwołanie do `_imp___ZN12QApplicationC1ERiPPci '

Pracuję w systemie Windows. Zainstalowałem Qt (5.1.0), MinGW (g ++ 4.6.2), Gnu Make (3.81).

Próbuję skompilować prostą aplikację Qt. Najbardziej podstawowa sprawa jest taka:

#include <QtWidgets> 
#include <QtGui> 

int main (int argc, char* argv[]) {    
    QApplication app(argc, argv);     
    QTextStream cout(stdout);        
    return EXIT_SUCCESS; 
} 

Plik projektu jest:

TEMPLATE = app 
TARGET = example1 
INCLUDEPATH += . 

# Input 
SOURCES += fac1.cpp 
QT += gui widgets core 

Kiedy biegnę

qmake 

generuje Makefile.

Ale potem make uzyskać to:

C:\src\early-examples\example1>make 
make -f Makefile.Release 
make[1]: Entering directory `C:/src/early-examples/example1' 
g++ -Wl,-s -Wl,-subsystem,console -mthreads -o release\example1.exe release/fac1.o -LC:\Qt\Qt5.1.0\\5.1.0\msvc2012_64\lib -lQt5Widgets -lQt5Gui -lQt5Core -llibEGL -llibGLESv2 -lgdi32 -luser32 
release/fac1.o:fac1.cpp:(.text.startup+0x2e): undefined reference to `_imp___ZN12QApplicationC1ERiPPci' 
release/fac1.o:fac1.cpp:(.text.startup+0x37): undefined reference to `_imp___ZN12QApplicationD1Ev' 
collect2: ld returned 1 exit status 
make[1]: *** [release\example1.exe] Error 1 
make[1]: Leaving directory `C:/src/early-examples/example1' 
make: *** [release] Error 2 

Czy możesz mi powiedzieć, co jest nie tak?

+0

Wygląda na to są mieszania kompilatory tutaj. Dlaczego korzystasz z biblioteki Visual Studio z gcc? – drescherjm

+0

Próbuję użyć g ++, ale niektóre zmienne ustawień/env mogą być dla mnie nieznane. Jak możesz powiedzieć? – ynka

+0

Czy mówisz, że muszę używać Visual Studio do używania Qt? – ynka

Odpowiedz

8

Problem polega na tym, że wydajesz się używać bibliotek Visual Studio 2012 do kompilacji mingw. Zamiast tego należy utworzyć łącze do skompilowanej biblioteki Qt.

+0

Tak. Pobrałem (z http://qt-project.org/downloads) Qt 5.1.0 dla Windows 64-bit (VS 2012, 525 MB) zamiast Qt 5.1.0 dla Windows 32-bit (MinGW 4.8, OpenGL, 666 MB). Działa teraz dobrze! – ynka

+1

Jest to powód, dla którego jest tak wiele wydań binarnych Qt na pliki do pobrania. Nawet mieszanie różnych wersji studyjnych może przysporzyć problemów. – drescherjm

0

Dodaj "greaterThan (QT_MAJOR_VERSION, 4): QT + = widgety" do swojego pliku .pro