C++ QT creator与mingw、glew链接错误

C++ QT creator与mingw、glew链接错误,c++,qt,mingw,qt-creator,glew,C++,Qt,Mingw,Qt Creator,Glew,我已经尝试了大约3/4天将glew与qt creator链接,但我无法做到。 我试过使用msvc和MingW64&32位。 现在我使用的是Mingw32位,也是用mingw编译的32位glew 这是my.pro文件中的代码: QT += core gui opengl CONFIG += c++11 INCLUDEPATH += C:/lib/glew-gcc-debug-1.10.0-win32/include/GL LIBS += -lglew32.dll -LC:/lib

我已经尝试了大约3/4天将glew与qt creator链接,但我无法做到。 我试过使用msvc和MingW64&32位。 现在我使用的是Mingw32位,也是用mingw编译的32位glew

这是my.pro文件中的代码:

QT       += core gui opengl

CONFIG += c++11

INCLUDEPATH += C:/lib/glew-gcc-debug-1.10.0-win32/include/GL

LIBS += -lglew32.dll -LC:/lib/glew-gcc-debug-1.10.0-win32/bin -LC:/lib/glew-gcc-debug-1.10.0-win32/lib


TARGET = Test
TEMPLATE = app


SOURCES += \
    glslprogram.cpp \
    glutils.cpp \
    main.cpp \
    mainview.cpp \
    mainwindow.cpp \
    sceneLine.cpp \
    dialog.cpp \
    viewpositiondialog.cpp

HEADERS  += \
    glslprogram.h \
    glutils.h \
    mainview.h \
    scene.h \
    mainwindow.h \
    sceneLine.h \
    dialog.h \
    viewpositiondialog.h

FORMS += \
    dialog.ui \
    viewpositiondialog.ui

OTHER_FILES += \
    shader/scenebasic2.dat
这就是输出:

g++ -Wl,-subsystem,windows -mthreads -o debug\Test.exe object_script.Test.Debug  -lmingw32 -LC:/Qt/Qt5.5.0/5.5/mingw492_32/lib -lqtmaind -lshell32 -lglew32.dll -LC:/lib/glew-gcc-debug-1.10.0-win32/bin -LC:/lib/glew-gcc-debug-1.10.0-win32/lib -lQt5OpenGLd -lQt5Widgetsd -lQt5Guid -lQt5Cored 
./debug\glutils.o: In function `ZN7GLUtils19checkForOpenGLErrorEv':
C:\Development\test\build-Test-Desktop_Qt_5_5_0_MinGW_32bit-Debug/../Test/glutils.cpp:34: undefined reference to `glGetError@0'
C:\Development\test\build-Test-Desktop_Qt_5_5_0_MinGW_32bit-Debug/../Test/glutils.cpp:39: undefined reference to `glGetError@0'
Makefile.Debug:112: recipe for target 'debug\Test.exe' failed
./debug\glutils.o: In function `ZN7GLUtils10dumpGLInfoEb':
C:\Development\test\build-Test-Desktop_Qt_5_5_0_MinGW_32bit-Debug/../Test/glutils.cpp:46: undefined reference to `glGetString@4'
C:\Development\test\build-Test-Desktop_Qt_5_5_0_MinGW_32bit-Debug/../Test/glutils.cpp:47: undefined reference to `glGetString@4'
C:\Development\test\build-Test-Desktop_Qt_5_5_0_MinGW_32bit-Debug/../Test/glutils.cpp:48: undefined reference to `glGetString@4'
C:\Development\test\build-Test-Desktop_Qt_5_5_0_MinGW_32bit-Debug/../Test/glutils.cpp:49: undefined reference to `glGetString@4'
C:\Development\test\build-Test-Desktop_Qt_5_5_0_MinGW_32bit-Debug/../Test/glutils.cpp:52: undefined reference to `glGetIntegerv@8'
C:\Development\test\build-Test-Desktop_Qt_5_5_0_MinGW_32bit-Debug/../Test/glutils.cpp:53: undefined reference to `glGetIntegerv@8'
C:\Development\test\build-Test-Desktop_Qt_5_5_0_MinGW_32bit-Debug/../Test/glutils.cpp:63: undefined reference to `glGetIntegerv@8'
./debug\mainview.o: In function `ZN8MainView12initializeGLEv':
C:\Development\test\build-Test-Desktop_Qt_5_5_0_MinGW_32bit-Debug/../Test/mainview.cpp:113: undefined reference to `glClearColor@16'
./debug\sceneLine.o: In function `ZN9SceneLine9initSceneEv':
C:\Development\test\build-Test-Desktop_Qt_5_5_0_MinGW_32bit-Debug/../Test/sceneLine.cpp:279: undefined reference to `glClearColor@16'
C:\Development\test\build-Test-Desktop_Qt_5_5_0_MinGW_32bit-Debug/../Test/sceneLine.cpp:280: undefined reference to `glEnable@4'
./debug\sceneLine.o: In function `ZN9SceneLine6renderEPf':
C:\Development\test\build-Test-Desktop_Qt_5_5_0_MinGW_32bit-Debug/../Test/sceneLine.cpp:325: undefined reference to `glClear@4'
C:\Development\test\build-Test-Desktop_Qt_5_5_0_MinGW_32bit-Debug/../Test/sceneLine.cpp:336: undefined reference to `glDrawArrays@12'
./debug\sceneLine.o: In function `ZN9SceneLine6renderEdPf':
C:\Development\test\build-Test-Desktop_Qt_5_5_0_MinGW_32bit-Debug/../Test/sceneLine.cpp:350: undefined reference to `glClear@4'
C:\Development\test\build-Test-Desktop_Qt_5_5_0_MinGW_32bit-Debug/../Test/sceneLine.cpp:360: undefined reference to `glDrawArrays@12'
./debug\sceneLine.o: In function `ZN9SceneLine6renderEddddddPf':
C:\Development\test\build-Test-Desktop_Qt_5_5_0_MinGW_32bit-Debug/../Test/sceneLine.cpp:393: undefined reference to `glClear@4'
C:\Development\test\build-Test-Desktop_Qt_5_5_0_MinGW_32bit-Debug/../Test/sceneLine.cpp:417: undefined reference to `glDrawArrays@12'
C:\Development\test\build-Test-Desktop_Qt_5_5_0_MinGW_32bit-Debug/../Test/sceneLine.cpp:421: undefined reference to `glDrawArrays@12'
./debug\sceneLine.o: In function `ZN9SceneLine6resizeEii':
C:\Development\test\build-Test-Desktop_Qt_5_5_0_MinGW_32bit-Debug/../Test/sceneLine.cpp:441: undefined reference to `glViewport@16'
./debug\sceneLine.o: In function `ZN5SceneC2Ev':
C:\Development\test\build-Test-Desktop_Qt_5_5_0_MinGW_32bit-Debug/../Test/scene.h:4: undefined reference to `vtable for Scene'
collect2.exe: error: ld returned 1 exit status
mingw32-make[1]: Leaving directory 'C:/Development/test/build-Test-Desktop_Qt_5_5_0_MinGW_32bit-Debug'
makefile:34: recipe for target 'debug' failed

希望有人能帮忙。

你的链接命令行看起来可疑;特别是缺少
-mwindows
,以及指定库的顺序。为什么指定
-lshell32
-lmingw32
?这些是默认库;应该让编译器驱动程序自己指定它们。为什么指定
-lglew32.dll
?当然应该是
-lglew32
,(除非您的DLL真的被称为
glew32.DLL.DLL
)。我没有指定shell或mingw库,这只是输出。由于库是glew32.dll.a(使用mingw编译),您需要放置“.dll”以链接它。“我没有指定shell或mingw库,这只是输出。”。这并不意味着它是正确的——它不是(虽然这可能不是关键的;OTOH,库的顺序是)。“因为库是glew32.dll.a(用mingw编译),所以需要放置“.dll”以链接它。“错误!建议你阅读;您告诉它查找
libglew32.dll.dll.a
glew32.dll.dll.a
libglew32.dll.a
(它可能只是偶然地找到了它,但找不到,因为它应该是一个静态库,而不是dll导入库),
glew32.lib
libglew32.dll
,然后是
glew32.dll
,正是按照此搜索顺序。更正我的上一条注释:指定搜索列表中的最后三项(从
-lglew32.dll
展开)应分别为
glew32.dll.lib
libglew32.dll.dll
、和
glew32.dll.dll