C++ QT creator与mingw、glew链接错误
我已经尝试了大约3/4天将glew与qt creator链接,但我无法做到。 我试过使用msvc和MingW64&32位。 现在我使用的是Mingw32位,也是用mingw编译的32位glew 这是my.pro文件中的代码: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
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
。