[Qt-interest] Qt 2009.02, WinXP mingw32, and OpenGL *static* linking problem
Jens Holzhaeuser
Jens.Holzhaeuser at gmx.net
Thu May 7 19:57:58 CEST 2009
Hi,
I've done a fair share of (Qt, C++) development on Unix/Linux, but I am
completely new to this on Windows XP.
I installed the Qt 2009.02 SDK (http://www.qtsoftware.com/downloads) and
can compile, (dynamically) link and run my application (which uses OpenGL).
For distribution I'd like to create a statically linked windows executable,
so I tried the following
* made complete copy of 2009.02\qt and named it 2009.02\qt-static
* created a new file 2009.02\bin\qtenv-static.bat (from qtenv.bat as a template)
to reflect the qt-static paths:
@echo off
rem
rem This file is generated
rem
echo Setting up a MinGW/Qt only environment...
echo -- QTDIR set to D:\Qt\2009.02\qt-static
echo -- PATH set to D:\Qt\2009.02\qt-static\bin
echo -- Adding D:\Qt\2009.02\bin to PATH
echo -- Adding %SystemRoot%\System32 to PATH
echo -- QMAKESPEC set to win32-g++
set QTDIR=D:\Qt\2009.02\qt-static
set PATH=D:\Qt\2009.02\qt-static\bin
set PATH=%PATH%;D:\Qt\2009.02\bin;D:\Qt\2009.02\mingw\bin
set PATH=%PATH%;%SystemRoot%\System32
set QMAKESPEC=win32-g++
* edited 2009.02/qt-static/configure.cache from
-debug-and-release
-confirm-license
-plugin-sql-sqlite
-plugin-sql-odbc
-qt-libpng
-qt-libjpeg
-openssl
-opensource
-no-incredibuild-xge
to
-static
-debug-and-release
-confirm-license
-plugin-sql-sqlite
-plugin-sql-odbc
-qt-libpng
-qt-libjpeg
-opensource
-no-incredibuild-xge
(I don't need or have openssl, I added the -static switch)
* then ran "configure -redo" and "mingw32-make sub-src" in 2009.02\qt-static
(and a few hours later, then)
* I get a linker error when I try to compile my own OpenGL application in this new
Qt environment. I get the same linker error when I try to make the OpenGL
examples that come with Qt ("cd 2009.02\qt-static\examples\opengl" and
"mingw32-make"), so I guess I have a fundamental problem here:
[...]
g++ -enable-stdcall-fixup -Wl,-enable-auto-import -Wl,-enable-runtime-pseudo-reloc -mthreads -Wl -Wl,-subsystem,windows -o debug\2dpainting.exe tmp/obj/debug_static/glwidget.o tmp/obj/debug_static/helper.o tmp/obj/debug_static/main.o tmp/obj/debug_static/widget.o tmp/obj/debug_static/window.o tmp/obj/debug_static/moc_glwidget.o tmp/obj/debug_static/moc_widget.o tmp/obj/debug_static/moc_window.o -L"d:\Qt\2009.02\QT-STA~1\lib" -L"d:\Qt\2009.02\QT-STA~1\lib" -lmingw32 -lqtmaind -lQtOpenGLd -lopengl32 -lglu32 -lQtGuid -lgdi32 -lcomdlg32 -loleaut32 -limm32 -lwinmm -lwinspool -lmsimg32 -lQtCored -lkernel32 -luser32 -lshell32 -luuid -lole32 -ladvapi32 -lws2_32
d:\Qt\2009.02\QT-STA~1\lib/libQtGuid.a(qapplication_win.o)(.bss+0x1): In function `ZN5QHashI7QStringiE8freeDataEP9QHashData':
D:/Qt/2009.02/QT-STA~1/src/gui/../../include/QtCore/../../src/corelib/thread/qbasicatomic.h: multiple definition of `qt_win_owndc_required'
d:\Qt\2009.02\QT-STA~1\lib/libQtOpenGLd.a(qwindowsurface_gl.o)(.bss+0x0):D:/Qt/2009.02/QT-STA~1/src/opengl/../../include/QtCore/../../src/corelib/tools/qvector.h: first defined here
collect2: ld returned 1 exit status
mingw32-make[2]: *** [debug\2dpainting.exe] Error 1
mingw32-make[2]: Leaving directory `D:/Qt/2009.02/QT-STA~1/examples/opengl/2dpainting'
mingw32-make[1]: *** [debug-all] Error 2
mingw32-make[1]: Leaving directory `D:/Qt/2009.02/QT-STA~1/examples/opengl/2dpainting'
mingw32-make: *** [sub-2dpainting-make_default] Error 2
* Compiling and running other non-OpenGL examples works fine.
Apparently two static libs contain definitions for the same symbol
(`qt_win_owndc_required'). Being unfamiliar with development on Windows, I have no
idea why that is and how to correct the problem. Can anybody help? Googeling hasn't
brought up any hints for me.
Thanks,
Jens
--
Jens Holzhäuser jens.holzhaeuser at gmx.net
Richmond, Virginia (USA)
More information about the Qt-interest-old
mailing list