Минимальное wxWidgets. cpp Ошибка в строке в функции `wxString :: ImplStr (char const *, wxMBConv const &) ' - PullRequest
0 голосов
/ 21 апреля 2020

Получение этой ошибки при компиляции и компоновке минимального. cpp файла из каталога примеров

g++ -o "SampleMinimal" ./src/minimal.o   -lwx_mswu_xrc-3.0-x86_64-w64-mingw32 -lwx_mswu_webview-3.0-x86_64-w64-mingw32 -lwx_mswu_html-3.0-x86_64-w64-mingw32 -lwx_mswu_qa-3.0-x86_64-w64-mingw32 -lwx_mswu_adv-3.0-x86_64-w64-mingw32 -lwx_mswu_core-3.0-x86_64-w64-mingw32 -lwx_baseu_xml-3.0-x86_64-w64-mingw32 -lwx_baseu_net-3.0-x86_64-w64-mingw32 -lwx_baseu-3.0-x86_64-w64-mingw32 -L/usr/x86_64-w64-mingw32/sys-root/mingw/lib -Wl,--subsystem,windows -mwindows -Wl,--enable-auto-import
/usr/lib/gcc/x86_64-pc-cygwin/9.3.0/../../../../x86_64-pc-cygwin/bin/ld: ./src/minimal.o: in function `wxString::ImplStr(char const*, wxMBConv const&)':
/usr/x86_64-w64-mingw32/sys-root/mingw/include/wx-3.0/wx/string.h:477: undefined reference to `wxString::ConvertStr(char const*, unsigned long, wxMBConv const&)'
/usr/x86_64-w64-mingw32/sys-root/mingw/include/wx-3.0/wx/string.h:477:(.text$_ZN8wxString7ImplStrEPKcRK8wxMBConv[_ZN8wxString7ImplStrEPKcRK8wxMBConv]+0x3a): relocation truncated to fit: R_X86_64_PC32 against undefined symbol `wxString::ConvertStr(char const*, unsigned long, wxMBConv const&)'
collect2: error: ld returned 1 exit status

Успешное создание объектного файла.

Командная строка компилятора:

g++ -D_FILE_OFFSET_BITS=64 -DWXUSINGDLL -D__WXMSW__ -I/usr/x86_64-w64-mingw32/sys-root/mingw/lib/wx/include/x86_64-w64-mingw32-msw-unicode-3.0 -I"/usr/x86_64-w64-mingw32/sys-root/mingw/include/wx-3.0" -O0 -g3 -Wall -c -fmessage-length=0 -MMD -MP -MF"src/minimal.d" -MT"src/minimal.o" -o "src/minimal.o" "../src/minimal.cpp"
Finished building: ../src/minimal.cpp

Командная строка компоновщика:

g++ -o "SampleMinimal" ./src/minimal.o   -lwx_mswu_xrc-3.0-x86_64-w64-mingw32 -lwx_mswu_webview-3.0-x86_64-w64-mingw32 -lwx_mswu_html-3.0-x86_64-w64-mingw32 -lwx_mswu_qa-3.0-x86_64-w64-mingw32 -lwx_mswu_adv-3.0-x86_64-w64-mingw32 -lwx_mswu_core-3.0-x86_64-w64-mingw32 -lwx_baseu_xml-3.0-x86_64-w64-mingw32 -lwx_baseu_net-3.0-x86_64-w64-mingw32 -lwx_baseu-3.0-x86_64-w64-mingw32 -L/usr/x86_64-w64-mingw32/sys-root/mingw/lib -Wl,--subsystem,windows -mwindows -Wl,--enable-auto-import

Ответы [ 2 ]

1 голос
/ 21 апреля 2020

Вы, очевидно, компилируете minimal образец в режиме отладки, смотрите флаг -g3, затем пытаетесь связать с релизом mswu libs.

Так что либо измените пример компиляции на режим выпуска, либо измените команду компоновщика, чтобы использовать mswud отладочные библиотеки.

0 голосов
/ 21 апреля 2020

Решил проблему, выполнив Command: x86_64-w64-mingw32-g ++ для компилятора G CC C ++ и MinGW C ++ Linker в настройках сборки C / C ++ в Eclipse. Я думал, что это было сделано автоматически, выбрав цепочку инструментов MinGW. Большое спасибо Каталину за то, что он указал, что я ссылался на библиотеки релизов в конфигурации отладочной сборки. Его ответ сделать мою версию конфигурации сборки позволил мне сделать еще один шаг вперед. Спасибо!

...