Я пытаюсь использовать x86_64-w64-mingw32-g++
утилита для компиляции двоичного файла Win64 на моей машине Debian. У меня проблема с undefined reference *
ошибки компоновщика, хотя я передаю библиотеки компоновщику:
# /usr/bin/x86_64-w64-mingw32-g++ -lgdi32 -luser32 -lkernel32 -lcomctl32 -m64 -o main.exe main.cpp code.obj
/tmp/ccSKB1pW.o:main.cpp:(.text+0x82a): undefined reference to `__imp_CreateCompatibleDC'
/tmp/ccSKB1pW.o:main.cpp:(.text+0x847): undefined reference to `__imp_CreateCompatibleBitmap'
/tmp/ccSKB1pW.o:main.cpp:(.text+0x85f): undefined reference to `__imp_SelectObject'
/tmp/ccSKB1pW.o:main.cpp:(.text+0x871): undefined reference to `__imp_CreateSolidBrush'
/tmp/ccSKB1pW.o:main.cpp:(.text+0x8da): undefined reference to `__imp_BitBlt'
/tmp/ccSKB1pW.o:main.cpp:(.text+0x8ee): undefined reference to `__imp_SelectObject'
/tmp/ccSKB1pW.o:main.cpp:(.text+0x8fe): undefined reference to `__imp_DeleteObject'
/tmp/ccSKB1pW.o:main.cpp:(.text+0x90e): undefined reference to `__imp_DeleteDC'
collect2: error: ld returned 1 exit status
Я не могу найти много информации об этой проблеме в Интернете. Есть идеи, почему он не находит символы в библиотеках?
Редактировать: Насколько я могу судить, библиотека debian предоставила библиотеку GDI:
# dpkg -L mingw-w64-x86-64-dev | grep gdi32
/usr/x86_64-w64-mingw32/lib/libgdi32.a
Кроме того, я могу найти символы в файле библиотеки:
# objdump -t /usr/x86_64-w64-mingw32/lib/libgdi32.a | grep CreateCompat
[ 7](sec 1)(fl 0x00)(ty 0)(scl 2) (nx 0) 0x0000000000000000 CreateCompatibleDC
[ 8](sec 5)(fl 0x00)(ty 0)(scl 2) (nx 0) 0x0000000000000000 __imp_CreateCompatibleDC
[ 7](sec 1)(fl 0x00)(ty 0)(scl 2) (nx 0) 0x0000000000000000 CreateCompatibleBitmap
[ 8](sec 5)(fl 0x00)(ty 0)(scl 2) (nx 0) 0x0000000000000000 __imp_CreateCompatibleBitmap
Задача ещё не решена.
Других решений пока нет …