Может ли кто-нибудь сказать мне, что будет включать соответствующий файл include для CreateRectRgnIndirect
, CreateSolidBrush
, FillRgn
, CreatePen
и т.д.?
Я пытаюсь работать с ошибками, например:
build/Release/Cygwin_4.x-Windows/mywindow.o:mywindow.cpp:(.text+0xc3): undefined reference
to _imp__CreateRectRgnIndirect@4' build/Release/Cygwin_4.x-Windows/mywindow.o:mywindow.cpp:
(.text+0xca): undefined reference to _imp__CreateSolidBrush@4'
Я не могу найти его в любых поисковых запросах Google, которые я сделал до сих пор.
Это ошибка компоновщика. Эти функции были объявлены, но не определены. Поэтому вам необходимо дать определение. Обычно это делается в Windows с использованием библиотеки импорта. В случае этих функций GDI это Gdi32.lib
. Поставка этой библиотеки для вашего компоновщика и все будет хорошо.
Чтобы узнать, какую библиотеку использовать для конкретной функции Win32, обратитесь к документации. Например, возьмите CreateRectRgnIndirect
. В нижней части документации приведен список требований, включая заголовочный файл, который объявляет эту функцию, и библиотеку, которая ее определяет.
В этом случае вам предлагается включить Windows.h
и ссылку на Gdi32.lib
. Очевидно, вы уже сделали первое, потому что иначе вы бы не дошли до ссылки.
Моя ошибка была в том, что в моей команде компиляции (libgdi32.a) отсутствовала библиотека, и после этого я не помещал -lgdi32 ПОСЛЕ моего исходного кода, как в:
Неверно (неопределенная ошибка ссылки во время компиляции):
gcc -lgdi32 source.cpp
Правильный:
gcc source.cpp -lgdi32
Узнал благодаря этой странице: http://www.mingw.org/wiki/Specify_the_libraries_for_the_linker_to_use
#include <Windows.h>
это#include <Windows.h>