1

I am getting an error while trying to cross-compile my application on ArchLinux for Windows using mingw. I am using meson for the build system and I wrote a .ini file according to the documentation here. Here is the .ini file,

[constants]
arch = 'x86_64'

[binaries]
c = 'x86_64-w64-mingw32-gcc'
cpp = 'x86_64-w64-mingw32-g++'
ar = 'x86_64-w64-mingw32-ar'
ld = 'x86_64-w64-mingw32-ld'
objcopy = 'x86_64-w64-mingw32-objcopy'
strip = 'x86_64-w64-mingw32-strip'
pkgconfig = 'x86_64-w64-mingw32-pkg-config'
windres = 'x86_64-w64-mingw32-windres'

[host_machine]
system = 'windows'
cpu_family = arch
cpu = arch
endian = 'little'

[built-in options]
cpp_std = 'c++14'

and here is the error I am getting,

❯ ninja -C win-build
ninja: Entering directory `win-build'
[30/309] Linking target subprojects/wxwidgets/libwxnet.dll
FAILED: subprojects/wxwidgets/libwxnet.dll
x86_64-w64-mingw32-g++  -o subprojects/wxwidgets/libwxnet.dll subprojects/wxwidgets/libwxnet.dll.p/src_common_fs_inet.cpp.obj subprojects/wxwidgets/libwxnet.dll.p/src_common_ftp.cpp.obj subprojects/wxwidgets/libwxnet.dll.p/src_common_http.cpp.obj subprojects/wxwidgets/libwxnet.dll.p/src_common_protocol.cpp.obj subprojects/wxwidgets/libwxnet.dll.p/src_common_sckaddr.cpp.obj subprojects/wxwidgets/libwxnet.dll.p/src_common_sckfile.cpp.obj subprojects/wxwidgets/libwxnet.dll.p/src_common_sckipc.cpp.obj subprojects/wxwidgets/libwxnet.dll.p/src_common_sckstrm.cpp.obj
subprojects/wxwidgets/libwxnet.dll.p/src_common_socket.cpp.obj subprojects/wxwidgets/libwxnet.dll.p/src_common_url.cpp.obj subprojects/wxwidgets/libwxnet.dll.p/src_common_webrequest.cpp.obj subprojects/wxwidgets/libwxnet.dll.p/src_common_webrequest_curl.cpp.obj subprojects/wxwidgets/libwxnet.dll.p/src_msw_sockmsw.cpp.obj subprojects/wxwidgets/libwxnet.dll.p/src_msw_urlmsw.cpp.obj subprojects/wxwidgets/libwxnet.dll.p/src_msw_webrequest_winhttp.cpp.obj -flto -Wl,--allow-shlib-undefined -shared -Wl,--start-group -Wl,--out-implib=subprojects/wxwidgets/libwxnet.dll.a subprojects/wxwidgets/libwxbase.dll.a -s -pthread -lkernel32 -luser32 -lgdi32 -lcomdlg32 -lwinspool -lwinmm -lshell32 -lshlwapi -lcomctl32 -lole32 -loleaut32 -luuid -lrpcrt4 -ladvapi32 -lversion -lws2_32 -lwininet -loleacc -luxtheme -lwinhttp -Wl,--end-group
/tmp/ccksX8W4.ltrans1.ltrans.o:<artificial>:(.text+0x4c7d): relocation truncated to fit: IMAGE_REL_AMD64_REL32 against undefined symbol `__cxa_pure_virtual'
/tmp/ccksX8W4.ltrans1.ltrans.o:<artificial>:(.text+0x50e6): relocation truncated to fit: IMAGE_REL_AMD64_REL32 against undefined symbol `__cxa_pure_virtual'
/tmp/ccksX8W4.ltrans1.ltrans.o:<artificial>:(.text.unlikely+0x2bf): relocation truncated to fit: IMAGE_REL_AMD64_REL32 against undefined symbol `__cxa_pure_virtual'
/tmp/ccksX8W4.ltrans1.ltrans.o:<artificial>:(.text.unlikely+0x2c5): relocation truncated to fit: IMAGE_REL_AMD64_REL32 against undefined symbol `__cxa_pure_virtual'
collect2: error: ld returned 1 exit status
[36/309] Compiling C++ object subprojects/taglib/libtag.a.p/taglib_mpeg_mpegheader.cpp.obj
../subprojects/taglib/taglib/mpeg/mpegheader.cpp: In constructor ‘TagLib::MPEG::Header::Header(const TagLib::ByteVector&)’:
../subprojects/taglib/taglib/mpeg/mpegheader.cpp:72:40: warning: unused parameter ‘data’ [-Wunused-parameter]
   72 | MPEG::Header::Header(const ByteVector &data) :

then it continues for a while and again throws this error and stop compilation,

[39/272] Linking target subprojects/wxwidgets/libwxcore.dll
FAILED: subprojects/wxwidgets/libwxcore.dll
x86_64-w64-mingw32-g++  -o subprojects/wxwidgets/libwxcore.dll subprojects/wxwidgets/libwxcore.dll.p/src_common_accelcmn.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_common_accesscmn.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_common_anidecod.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_common_affinematrix2d.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_common_appcmn.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_common_artprov.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_common_artstd.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_common_arttango.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_common_bmpbase.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_common_bmpbtncmn.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_common_bookctrl.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_common_btncmn.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_common_cairo.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_common_checkboxcmn.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_common_checklstcmn.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_common_choiccmn.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_common_clipcmn.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_common_clrpickercmn.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_common_colourcmn.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_common_colourdata.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_common_combocmn.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_common_cmdproc.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_common_cmndata.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_common_containr.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_common_cshelp.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_common_ctrlcmn.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_common_ctrlsub.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_common_dcbase.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_common_dcbufcmn.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_common_dcgraph.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_common_dcsvg.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_common_dirctrlcmn.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_common_dlgcmn.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_common_dndcmn.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_common_dobjcmn.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_common_docmdi.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_common_docview.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_common_dpycmn.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_common_dseldlg.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_common_effects.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_common_fddlgcmn.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_common_filectrlcmn.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_common_filehistorycmn.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_common_filepickercmn.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_common_fontpickercmn.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_common_fldlgcmn.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_common_fontcmn.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_common_fontdata.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_generic_graphicc.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_common_fontenumcmn.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_common_fontmap.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_common_fontutilcmn.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_common_framecmn.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_common_gaugecmn.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_common_gbsizer.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_common_gdicmn.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_common_geometry.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_common_gifdecod.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_common_graphcmn.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_common_headercolcmn.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_common_headerctrlcmn.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_common_helpbase.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_common_iconbndl.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_common_imagall.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_common_imagbmp.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_common_image.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_common_imagfill.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_common_imaggif.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_common_imagiff.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_common_imagjpeg.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_common_imagpcx.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_common_imagpng.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_common_imagpnm.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_common_imagtga.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_common_imagtiff.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_common_imagxpm.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_common_layout.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_common_lboxcmn.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_common_listctrlcmn.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_common_markupparser.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_common_matrix.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_common_menucmn.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_common_modalhook.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_common_mousemanager.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_common_nbkbase.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_common_overlaycmn.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_common_ownerdrwcmn.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_common_paper.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_common_panelcmn.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_common_persist.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_common_pickerbase.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_common_popupcmn.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_common_preferencescmn.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_common_prntbase.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_common_quantize.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_common_radiobtncmn.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_common_radiocmn.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_common_rearrangectrl.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_common_rendcmn.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_common_rgncmn.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_common_scrolbarcmn.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_common_settcmn.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_common_sizer.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_common_slidercmn.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_common_spinbtncmn.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_common_spinctrlcmn.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_common_srchcmn.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_common_statbar.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_common_statbmpcmn.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_common_statboxcmn.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_common_statlinecmn.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_common_stattextcmn.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_common_stockitem.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_common_tbarbase.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_common_textcmn.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_common_textentrycmn.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_common_textmeasurecmn.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_common_toplvcmn.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_common_treebase.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_common_uiactioncmn.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_common_valgen.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_common_validate.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_common_valtext.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_common_valnum.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_common_wincmn.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_common_windowid.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_common_wrapsizer.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_common_xpmdecod.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_generic_busyinfo.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_generic_buttonbar.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_generic_choicdgg.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_generic_choicbkg.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_generic_collheaderctrlg.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_generic_combog.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_generic_dcpsg.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_generic_dirctrlg.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_generic_dragimgg.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_generic_filectrlg.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_generic_headerctrlg.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_generic_infobar.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_generic_listbkg.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_generic_logg.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_generic_markuptext.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_generic_msgdlgg.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_generic_numdlgg.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_generic_progdlgg.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_generic_preferencesg.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_generic_printps.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_generic_renderg.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_generic_richmsgdlgg.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_generic_scrlwing.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_generic_selstore.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_generic_spinctlg.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_generic_splitter.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_generic_srchctlg.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_generic_statbmpg.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_generic_stattextg.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_generic_textdlgg.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_generic_tipwin.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_generic_toolbkg.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_generic_treectlg.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_generic_treebkg.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_generic_vlbox.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_generic_vscroll.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_xrc_xmlreshandler.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_common_bmpcboxcmn.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_generic_grideditors.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_generic_gridctrl.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_generic_grid.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_generic_hyperlinkg.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_common_calctrlcmn.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_generic_notifmsgg.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_generic_odcombo.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_generic_splash.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_common_gridcmn.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_common_addremovectrl.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_generic_tipdlg.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_generic_aboutdlgg.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_generic_gridsel.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_generic_sashwin.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_generic_helpext.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_generic_richtooltipg.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_generic_bmpcboxg.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_generic_timectrlg.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_common_notifmsgcmn.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_generic_commandlinkbuttong.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_generic_propdlg.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_generic_treelist.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_common_datavcmn.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_common_animatecmn.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_common_odcombocmn.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_common_hyperlnkcmn.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_common_richtooltipcmn.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_generic_datectlg.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_generic_bannerwindow.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_generic_laywin.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_generic_calctrlg.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_generic_wizard.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_generic_editlbox.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_generic_datavgen.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_generic_creddlgg.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_generic_rowheightcache.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_generic_animateg.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_common_bmpbndl.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_generic_bmpsvg.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_common_event.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_common_fs_mem.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_common_msgout.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_common_utilscmn.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_msw_main.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_msw_volume.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_msw_ole_activex.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_msw_app.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_msw_bitmap.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_msw_brush.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_msw_caret.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_msw_clipbrd.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_msw_colour.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_msw_cursor.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_msw_data.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_msw_dc.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_msw_dcclient.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_msw_dcmemory.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_msw_dcprint.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_msw_dcscreen.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_msw_dialup.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_msw_dib.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_msw_display.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_msw_enhmeta.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_msw_font.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_msw_fontenum.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_msw_fontutil.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_msw_gdiimage.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_msw_gdiobj.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_msw_gdiplus.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_msw_graphics.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_msw_graphicsd2d.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_msw_icon.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_msw_imaglist.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_msw_minifram.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_msw_nonownedwnd.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_msw_ole_comimpl.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_msw_ole_dataobj.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_msw_ole_dropsrc.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_msw_ole_droptgt.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_msw_ole_oleutils.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_msw_ole_safearray.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_msw_palette.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_msw_pen.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_msw_popupwin.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_msw_printdlg.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_msw_printwin.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_msw_region.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_msw_renderer.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_msw_rt_utilsrt.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_msw_settings.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_msw_textmeasure.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_msw_tooltip.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_msw_toplevel.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_msw_uiaction.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_msw_utilsgui.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_msw_utilswin.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_msw_uxtheme.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_msw_window.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_msw_joystick.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_msw_rt_notifmsgrt.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_msw_aboutdlg.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_msw_sound.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_msw_ole_uuid.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_msw_helpchm.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_common_taskbarcmn.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_msw_helpwin.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_msw_notifmsg.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_msw_ole_automtn.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_msw_taskbar.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_msw_richtooltip.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_msw_evtloop.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_msw_ole_access.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_msw_bmpbndl.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_generic_clrpickerg.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_generic_collpaneg.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_generic_filepickerg.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_generic_fontpickerg.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_generic_statusbr.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_generic_prntdlgg.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_msw_accel.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_msw_anybutton.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_msw_appprogress.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_msw_artmsw.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_msw_bmpbuttn.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_msw_button.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_msw_checkbox.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_msw_choice.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_msw_colordlg.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_msw_combo.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_msw_combobox.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_msw_control.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_msw_customdraw.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_msw_dialog.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_msw_dirdlg.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_msw_dragimag.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_msw_filedlg.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_msw_frame.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_msw_gauge.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_msw_headerctrl.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_msw_iniconf.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_msw_listbox.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_msw_listctrl.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_msw_mdi.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_msw_menu.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_msw_menuitem.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_msw_metafile.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_msw_msgdlg.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_msw_nativdlg.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_msw_nativewin.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_msw_notebook.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_msw_ownerdrw.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_msw_progdlg.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_msw_radiobox.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_msw_radiobut.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_msw_richmsgdlg.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_msw_scrolbar.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_msw_slider.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_msw_spinbutt.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_msw_spinctrl.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_msw_statbmp.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_msw_statbox.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_msw_statusbar.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_msw_statline.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_msw_stattext.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_msw_systhemectrl.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_msw_taskbarbutton.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_msw_toolbar.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_msw_textctrl.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_msw_textentry.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_msw_tglbtn.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_msw_treectrl.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_msw_bmpcbox.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_msw_datectrl.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_msw_calctrl.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_msw_datecontrols.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_msw_timectrl.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_msw_commandlinkbutton.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_msw_datetimectrl.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_msw_hyperlink.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_generic_activityindicator.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_msw_checklst.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_msw_fdrepdlg.cpp.obj subprojects/wxwidgets/libwxcore.dll.p/src_msw_fontdlg.cpp.obj -flto -Wl,--allow-shlib-undefined -shared -Wl,--start-group -Wl,--out-implib=subprojects/wxwidgets/libwxcore.dll.a subprojects/wxwidgets/libwxbase.dll.a subprojects/wxwidgets/libwxjpeg.a subprojects/wxwidgets/libwxpng.a subprojects/wxwidgets/libwxtiff.a subprojects/wxwidgets/libwxzlib.a -s -pthread -lkernel32 -luser32 -lgdi32 -lcomdlg32 -lwinspool -lwinmm -lshell32 -lshlwapi -lcomctl32 -lole32 -loleaut32 -luuid -lrpcrt4 -ladvapi32 -lversion -lws2_32 -lwininet -loleacc -luxtheme -Wl,--end-group
/usr/lib/gcc/x86_64-w64-mingw32/11.2.0/../../../../x86_64-w64-mingw32/bin/ld: subprojects/wxwidgets/libwxcore.dll.p/src_common_pickerbase.cpp.obj (symbol from plugin):(.gnu.linkonce.t._ZN14wxTextCtrlBase8SetValueERK8wxString[_ZThn720_N14wxTextCtrlBase8SetValueERK8wxString]+0x0): multiple definition of `wxTextCtrlBase::SetValue(wxString const&)'; subprojects/wxwidgets/libwxcore.dll.p/src_common_combocmn.cpp.obj (symbol from plugin):(.gnu.linkonce.t._ZN14wxTextCtrlBase8SetValueERK8wxString[_ZThn1376_N14wxTextCtrlBase8SetValueERK8wxString]+0x0): first defined here
/usr/lib/gcc/x86_64-w64-mingw32/11.2.0/../../../../x86_64-w64-mingw32/bin/ld: subprojects/wxwidgets/libwxcore.dll.p/src_common_pickerbase.cpp.obj (symbol from plugin):(.gnu.linkonce.t._ZN14wxTextCtrlBase8SetValueERK8wxString[_ZThn720_N14wxTextCtrlBase8SetValueERK8wxString]+0x0): multiple definition of `non-virtual thunk to wxTextCtrlBase::SetValue(wxString const&)'; subprojects/wxwidgets/libwxcore.dll.p/src_common_combocmn.cpp.obj (symbol from plugin):(.gnu.linkonce.t._ZN14wxTextCtrlBase8SetValueERK8wxString[_ZThn1376_N14wxTextCtrlBase8SetValueERK8wxString]+0x0): first defined here
/usr/lib/gcc/x86_64-w64-mingw32/11.2.0/../../../../x86_64-w64-mingw32/bin/ld: subprojects/wxwidgets/libwxcore.dll.p/src_common_pickerbase.cpp.obj (symbol from plugin):(.gnu.linkonce.t._ZN14wxTextCtrlBase8SetValueERK8wxString[_ZThn720_N14wxTextCtrlBase8SetValueERK8wxString]+0x0): multiple definition of `non-virtual thunk to wxTextCtrlBase::SetValue(wxString const&)'; subprojects/wxwidgets/libwxcore.dll.p/src_common_combocmn.cpp.obj (symbol from plugin):(.gnu.linkonce.t._ZN14wxTextCtrlBase8SetValueERK8wxString[_ZThn1376_N14wxTextCtrlBase8SetValueERK8wxString]+0x0): first defined here
../subprojects/wxwidgets/include/wx/generic/richmsgdlgg.h:17:24: warning: type ‘struct 
../subprojects/wxwidgets/src/generic/helpext.cpp:383:48: warning: argument 1 value ‘18446744073709551615’ exceeds maximum object size 9223372036854775807 [-Walloc-size-larger-than=]
  383 |    wxString *urls = new wxString[m_NumOfEntries];
      |                                                ^
/usr/x86_64-w64-mingw32/include/c++/11.2.0/new:128:26: note: in a call to allocation function ‘operator new []’ declared here
  128 | _GLIBCXX_NODISCARD void* operator new[](std::size_t) _GLIBCXX_THROW (std::bad_alloc)
      |                          ^
collect2: error: ld returned 1 exit status
ninja: build stopped: subcommand failed.

Command I used to build this is,

❯ meson setup --cross-file=cross-windows-x86_64.ini build-win

I have also tried to compile the same in a Windows virtual machine using MSYS2 and mingw compiler, I get very similar error before it finally fails and stops compiling.

On Windows I did the same as what I do on my Linux system to build the app which is,

meson build -Dprefix=/tmp/SampleHive
ninja -C build install

My original native build for Linux works fine though.

apoorv569
  • 143
  • 1
  • 12
  • how exactly did you cross-compile the library? What `exact` command did you use? – Igor Jan 31 '22 at 16:22
  • @Igor I have edited my original post as per your questions. – apoorv569 Feb 01 '22 at 11:09
  • I asked how exactly did you build wxWidgets, but I don't see the answer to this. Also, how did you build everything inside VM and what exact error message did you get? – Igor Feb 01 '22 at 13:43
  • @Igor I have `wx` as a `meson cmake subproject` in my `meson.build` file and I also have a `meson wrap` file that defines where to get the `wx` source from i.e their `git` master branch. So it first searches the system for already installed one, if it doesn't find it then it auto clones the `git` repo and compiles it. And I have have bunch of features turned ON/OFF depending on my needs. I don't do anything special. Check [this](https://gitlab.com/samplehive/sample-hive/-/blob/experimental-encapsulation/meson.build#L84) link for the `cmake` flags I use. – apoorv569 Feb 01 '22 at 14:07
  • @Igor My OP is exceeding 30000 word limit so I can't edit it anymore. Inside the `Windows VM` I did exactly the same steps as I do on my `Linux` machine. No extra commands. I just download `MSYS`, clone my repo, download dependencies for `mingw` equivalent, and let my `meson` build system clone `wx` and build my app. I did added it in the OP in my previous edit. The error I get is the exact same I get when cross compiling, it fails on linking a couple of `dll` files. – apoorv569 Feb 01 '22 at 14:14
  • so you are not building it for development, but for production/release. Now, about the second error - do you actually need a pointer to wxString? Why not just create an object on the stack? And about the first one - what MinGW compiler/version do you use? And I think you are getting that errors during wx compilation, right? Can you build wx (maybe inside VM) with just regular `mingw32-bin.exe -f makefile.gcc` and see if it builds correctly? Its possible this `meson` thingy adds some weird switch which is not used anywhere in the official wx build and – Igor Feb 01 '22 at 14:56
  • just produces an error. – Igor Feb 01 '22 at 14:56
  • Ok so I cloned a fresh repo of wx on `Windows` VM, navigated to `build\msw` there was no `mingw32-bin.exe` but there was `mingw32-make.exe` according [this](https://wiki.wxwidgets.org/Compiling_wxWidgets_with_MinGW) site, so I ran `mingw32-make -f makefile.gcc SHARED=1 UNICODE=1 BUILD=release` and the library built successfully with no errors. I also checked the `meson` logs on my `Linux` machine to see if it adds some flag or something and it looks like it only passes the flags I have set in the `meson.build` file for the `wx` subproject. And the `wxString*` that is not from my code its `wx`. – apoorv569 Feb 01 '22 at 18:17
  • then it is time to drop the `meson` thingy and either use official CMake stuff or use official makefiles. And sorry for the misunderstanding - I thought that both of those are from the user code and not wx. Or if you want to waste a lot of time for no apparent reason - you can try to terack down those differences in the build settings. BTW inside the wxWidgets\build\msw there is no mingw32-bin.exe and mingw32-make.exe. Those come from the MinGW install which should change the PATH variable in WIndows in order for you to run the compiler from anywhere. – Igor Feb 01 '22 at 22:46
  • BTW, you might try to run the external command in your build script - i.e. run `mingw32-make.exe -f makefile.gcc BUILD=release SHARED=1` inside you build configuration, You will just need to check if that is allowed and how to dp that. – Igor Feb 01 '22 at 22:47
  • @Igor Yes I know `mingw32-bin` and `mingw32-make` are supposed to be `mingw` `MSYS` installed binaries and not something in that directory. But these should be installed automatically to PATH via the MSYS installer. And I did all this in `Mingw` terminal only, and TAB completion only showed me `-make` command. Changing a build system just because of one thing is not a solution. I will try with all the flags I pass in my script to the `mingw32-make` command and see if it works. Though I don't think it will help in any way. Because most of the flags I'm passing are just turning ON/OFF features. – apoorv569 Feb 02 '22 at 07:19
  • Also the `mingw32-make` is using `makefile.gcc` which is a predefined `makefile` from `wxWidgets` and the way I build `wx` is from from `CMake`. So this test won't really help I think. – apoorv569 Feb 02 '22 at 07:21
  • @Igor so I tried running this command `mingw32-make.exe -f makefile.gcc SHARED=1 MONOLITHIC=0 BENCHMARKS=0 PRECOMP=0 TESTS=0 SAMPLES=0 DEMOS=0 COMPATIBILITY=3.0 TOOLKIT=msw UNICODE=1 AUI=0 XML=0 XRC=1 HTML=1 QA=1 PROPGRID=0 RIBBON=0 MDI=0 MDI_ARCHITECTUR=0 POSTSCRIPT=1 RICHTEXT=0 WEBVIEW=0 LIBSDL=0 MEDIACTRL=1 BUILD=Release -j2` on the `Windows` VM and the library built fine this time as well. These are all the flags that I pass in my `meson.build` file except a couple which are `CMake` specific, like `CMAKE_POSITION_INDEPENDENT_CODE` and `CMAKE_INSTALL_PREFIX`. – apoorv569 Feb 02 '22 at 08:05
  • why do you need MSYS? Are you using configure to build the library? Get rid of it and use default Windows terminal to build. – Igor Feb 02 '22 at 13:29
  • Also recently wxWidgets can be built using CMake. It even does so on the Travis CI. It has all necessary files to do that. I personally don't know much about, but I do know you can use an available makefile for the build (not regenerate it). – Igor Feb 02 '22 at 13:32
  • And finally I'm sure build configuration system (whatever you choose) can use external command. – Igor Feb 02 '22 at 13:34
  • @Igor I have found the solution and added a new answer. – apoorv569 Feb 15 '22 at 05:13

1 Answers1

1

It seems like the error was because of link time optimization. MinGW doesn't seem to like link time optimization, disabling it compiles wx just fine. I found the related information from here.

apoorv569
  • 143
  • 1
  • 12