Skip to content

[build] gui-builder build failure #161

@JackBoosY

Description

@JackBoosY

Hi guys,
We received a port bug on vcpkg (microsoft/vcpkg#18691) that report the gui-builder fail to build:

[115/116] cmd.exe /C "cd . && D:\vcpkg\downloads\tools\cmake-3.20.2-windows\cmake-3.20.2-windows-i386\bin\cmake.exe -E vs_link_exe --intdir=gui-builder\CMakeFiles\gui-builder.dir --rc=C:\PROGRA~2\WI3CF2~1\10\bin\100190~1.0\x64\rc.exe --mt=C:\PROGRA~2\WI3CF2~1\10\bin\100190~1.0\x64\mt.exe --manifests  -- C:\PROGRA~2\MICROS~2\2019\COMMUN~1\VC\Tools\MSVC\1429~1.300\bin\Hostx64\x64\link.exe  gui-builder\CMakeFiles\gui-builder.dir\src\main.cpp.obj gui-builder\CMakeFiles\gui-builder.dir\src\Form.cpp.obj gui-builder\CMakeFiles\gui-builder.dir\src\GuiBuilder.cpp.obj  /out:gui-builder\gui-builder.exe /implib:gui-builder\gui-builder.lib /pdb:gui-builder\gui-builder.pdb /version:0.0 /machine:x64 /nologo    /debug /INCREMENTAL /subsystem:windows  lib\tgui-d.lib  kernel32.lib user32.lib gdi32.lib winspool.lib shell32.lib ole32.lib oleaut32.lib uuid.lib comdlg32.lib advapi32.lib && cmd.exe /C "cd /D D:\vcpkg\buildtrees\tgui\x64-windows-dbg\gui-builder && D:\vcpkg\downloads\tools\cmake-3.20.2-windows\cmake-3.20.2-windows-i386\bin\cmake.exe -E copy D:/vcpkg/buildtrees/tgui/x64-windows-dbg/gui-builder/gui-builder.exe D:/vcpkg/buildtrees/tgui/src/6c283daf87-fb8995dab3.clean/gui-builder/ && D:\vcpkg\downloads\tools\cmake-3.20.2-windows\cmake-3.20.2-windows-i386\bin\cmake.exe -E copy_directory D:/vcpkg/buildtrees/tgui/src/6c283daf87-fb8995dab3.clean/themes D:/vcpkg/buildtrees/tgui/src/6c283daf87-fb8995dab3.clean/gui-builder/themes""
FAILED: gui-builder/gui-builder.exe 
cmd.exe /C "cd . && D:\vcpkg\downloads\tools\cmake-3.20.2-windows\cmake-3.20.2-windows-i386\bin\cmake.exe -E vs_link_exe --intdir=gui-builder\CMakeFiles\gui-builder.dir --rc=C:\PROGRA~2\WI3CF2~1\10\bin\100190~1.0\x64\rc.exe --mt=C:\PROGRA~2\WI3CF2~1\10\bin\100190~1.0\x64\mt.exe --manifests  -- C:\PROGRA~2\MICROS~2\2019\COMMUN~1\VC\Tools\MSVC\1429~1.300\bin\Hostx64\x64\link.exe  gui-builder\CMakeFiles\gui-builder.dir\src\main.cpp.obj gui-builder\CMakeFiles\gui-builder.dir\src\Form.cpp.obj gui-builder\CMakeFiles\gui-builder.dir\src\GuiBuilder.cpp.obj  /out:gui-builder\gui-builder.exe /implib:gui-builder\gui-builder.lib /pdb:gui-builder\gui-builder.pdb /version:0.0 /machine:x64 /nologo    /debug /INCREMENTAL /subsystem:windows  lib\tgui-d.lib  kernel32.lib user32.lib gdi32.lib winspool.lib shell32.lib ole32.lib oleaut32.lib uuid.lib comdlg32.lib advapi32.lib && cmd.exe /C "cd /D D:\vcpkg\buildtrees\tgui\x64-windows-dbg\gui-builder && D:\vcpkg\downloads\tools\cmake-3.20.2-windows\cmake-3.20.2-windows-i386\bin\cmake.exe -E copy D:/vcpkg/buildtrees/tgui/x64-windows-dbg/gui-builder/gui-builder.exe D:/vcpkg/buildtrees/tgui/src/6c283daf87-fb8995dab3.clean/gui-builder/ && D:\vcpkg\downloads\tools\cmake-3.20.2-windows\cmake-3.20.2-windows-i386\bin\cmake.exe -E copy_directory D:/vcpkg/buildtrees/tgui/src/6c283daf87-fb8995dab3.clean/themes D:/vcpkg/buildtrees/tgui/src/6c283daf87-fb8995dab3.clean/gui-builder/themes""
LINK Pass 1: command "C:\PROGRA~2\MICROS~2\2019\COMMUN~1\VC\Tools\MSVC\1429~1.300\bin\Hostx64\x64\link.exe gui-builder\CMakeFiles\gui-builder.dir\src\main.cpp.obj gui-builder\CMakeFiles\gui-builder.dir\src\Form.cpp.obj gui-builder\CMakeFiles\gui-builder.dir\src\GuiBuilder.cpp.obj /out:gui-builder\gui-builder.exe /implib:gui-builder\gui-builder.lib /pdb:gui-builder\gui-builder.pdb /version:0.0 /machine:x64 /nologo /debug /INCREMENTAL /subsystem:windows lib\tgui-d.lib kernel32.lib user32.lib gdi32.lib winspool.lib shell32.lib ole32.lib oleaut32.lib uuid.lib comdlg32.lib advapi32.lib /MANIFEST /MANIFESTFILE:gui-builder\CMakeFiles\gui-builder.dir/intermediate.manifest gui-builder\CMakeFiles\gui-builder.dir/manifest.res" failed (exit code 1120) with the following output:
MSVCRTD.lib(exe_winmain.obj) : error LNK2019: unresolved external symbol WinMain referenced in function "int __cdecl invoke_main(void)" (?invoke_main@@YAHXZ)
gui-builder\gui-builder.exe : fatal error LNK1120: 1 unresolved externals

That because here

# Make a GUI application on windows (without having the command line window)
if(TGUI_OS_WINDOWS)
set(GUI_TYPE WIN32)
endif()
add_executable(gui-builder ${GUI_TYPE} ${GUI_BUILDER_SOURCES})

set the entry point to WinMain, see cmake docs.
But in the source file
#ifdef TGUI_SYSTEM_WINDOWS
int main(int, char**) // We don't use argv on Windows
#else
int main(int, char* argv[])
#endif

All the entry points are main.

I can confirm that this issue still exist on the latest commit.

Can anyone help us?

Thanks.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions