-
Bug
-
Resolution: Out of scope
-
Not Evaluated
-
None
-
4.8.x, 5.3.1, 5.4.1
-
None
I trying to compile correct unicode application. For this I use UNICODE and _UNICODE defines and -municode linker flag. Building fails with error: undefined reference to `wWinMain@16'
Full compilation output:
[taurus@lix build]$ mingw32-cmake -DCMAKE_BUILD_TYPE=Release ..
-- The C compiler identification is GNU 4.8.4
-- The CXX compiler identification is GNU 4.8.4
-- Check for working C compiler: /usr/bin/i686-w64-mingw32-gcc
-- Check for working C compiler: /usr/bin/i686-w64-mingw32-gcc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working CXX compiler: /usr/bin/i686-w64-mingw32-g++
-- Check for working CXX compiler: /usr/bin/i686-w64-mingw32-g++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Configuring done
-- Generating done
CMake Warning:
Manually-specified variables were not used by the project:
CMAKE_INSTALL_LIBDIR
INCLUDE_INSTALL_DIR
SHARE_INSTALL_PREFIX
SYSCONF_INSTALL_DIR
-- Build files have been written to: /home/taurus/develop/unicode-test/build
[taurus@lix build]$ make VERBOSE=1
/usr/bin/cmake -H/home/taurus/develop/unicode-test -B/home/taurus/develop/unicode-test/build --check-build-system CMakeFiles/Makefile.cmake 0
/usr/bin/cmake -E cmake_progress_start /home/taurus/develop/unicode-test/build/CMakeFiles /home/taurus/develop/unicode-test/build/CMakeFiles/progress.marks
make -f CMakeFiles/Makefile2 all
make[1]: Entering directory `/home/taurus/develop/unicode-test/build'
make -f CMakeFiles/unicode-test.dir/build.make CMakeFiles/unicode-test.dir/depend
make[2]: Entering directory `/home/taurus/develop/unicode-test/build'
cd /home/taurus/develop/unicode-test/build && /usr/bin/cmake -E cmake_depends "Unix Makefiles" /home/taurus/develop/unicode-test /home/taurus/develop/unicode-test /home/taurus/develop/unicode-test/build /home/taurus/develop/unicode-test/build /home/taurus/develop/unicode-test/build/CMakeFiles/unicode-test.dir/DependInfo.cmake --color=
Dependee "/home/taurus/develop/unicode-test/build/CMakeFiles/unicode-test.dir/DependInfo.cmake" is newer than depender "/home/taurus/develop/unicode-test/build/CMakeFiles/unicode-test.dir/depend.internal".
Dependee "/home/taurus/develop/unicode-test/build/CMakeFiles/CMakeDirectoryInformation.cmake" is newer than depender "/home/taurus/develop/unicode-test/build/CMakeFiles/unicode-test.dir/depend.internal".
Scanning dependencies of target unicode-test
make[2]: Leaving directory `/home/taurus/develop/unicode-test/build'
make -f CMakeFiles/unicode-test.dir/build.make CMakeFiles/unicode-test.dir/build
make[2]: Entering directory `/home/taurus/develop/unicode-test/build'
/usr/bin/cmake -E cmake_progress_report /home/taurus/develop/unicode-test/build/CMakeFiles 1
[100%] Building CXX object CMakeFiles/unicode-test.dir/main.cpp.obj
/usr/bin/i686-w64-mingw32-g++ -DQT_CORE_LIB -DQT_GUI_LIB -DQT_NO_DEBUG -DQT_WIDGETS_LIB -DUNICODE -D_UNICODE -O3 -DNDEBUG @CMakeFiles/unicode-test.dir/includes_CXX.rsp -o CMakeFiles/unicode-test.dir/main.cpp.obj -c /home/taurus/develop/unicode-test/main.cpp
Linking CXX executable unicode-test.exe
/usr/bin/cmake -E cmake_link_script CMakeFiles/unicode-test.dir/link.txt --verbose=1
/usr/bin/cmake -E remove -f CMakeFiles/unicode-test.dir/objects.a
/usr/bin/i686-w64-mingw32-ar cr CMakeFiles/unicode-test.dir/objects.a @CMakeFiles/unicode-test.dir/objects1.rsp
/usr/bin/i686-w64-mingw32-g++ -O3 -DNDEBUG -mwindows -Wl,--whole-archive CMakeFiles/unicode-test.dir/objects.a -Wl,--no-whole-archive -o unicode-test.exe -Wl,--out-implib,libunicode-test.dll.a -Wl,--major-image-version,0,--minor-image-version,0 /usr/i686-w64-mingw32/sys-root/mingw/lib/libQt5Core.dll.a /usr/i686-w64-mingw32/sys-root/mingw/lib/libQt5Gui.dll.a /usr/i686-w64-mingw32/sys-root/mingw/lib/libQt5Widgets.dll.a -municode /usr/i686-w64-mingw32/sys-root/mingw/lib/libQt5Gui.dll.a /usr/i686-w64-mingw32/sys-root/mingw/lib/libQt5Core.dll.a /usr/i686-w64-mingw32/sys-root/mingw/lib/libqt5main.a -lkernel32 -luser32 -lgdi32 -lwinspool -lshell32 -lole32 -loleaut32 -luuid -lcomdlg32 -ladvapi32
/usr/i686-w64-mingw32/sys-root/mingw/lib/../lib/libmingw32.a(lib32_libmingw32_a-crt0_w.o):(.text+0x29): undefined reference to `wWinMain@16'
collect2: error: ld returned 1 exit status
make[2]: *** [unicode-test.exe] Error 1
make[2]: Leaving directory `/home/taurus/develop/unicode-test/build'
make[1]: *** [CMakeFiles/unicode-test.dir/all] Error 2
make[1]: Leaving directory `/home/taurus/develop/unicode-test/build'
make: *** [all] Error 2
I looked at Qt 4 and 5 sources. Seems no wWinMain function. Only WinMain.
In attachments full test case to reproduce a problem. It is cmake project with some specific options.
ENABLE_UNICODE - enable/disable unicode variant. By default ON.
QT5_BUILD - Qt5 or Qt4 building. By default ON.
- resulted in
-
QTBUG-46118 Add support for wmain() on Windows
-
- Reported
-