Не удается найти включаемый файл C ++ для функций рисования

0

Может ли кто-нибудь сказать мне, что будет включать соответствующий файл 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, которые я сделал до сих пор.

  • 0
    Погуглил это. Первое, что приходит на #include <Windows.h> это #include <Windows.h>
  • 0
    Это перечисляется прямо в документации MSDN. msdn.microsoft.com/en-us/library/windows/desktop/...
Показать ещё 10 комментариев
Теги:
winapi
cygwin

2 ответа

5

Это ошибка компоновщика. Эти функции были объявлены, но не определены. Поэтому вам необходимо дать определение. Обычно это делается в Windows с использованием библиотеки импорта. В случае этих функций GDI это Gdi32.lib. Поставка этой библиотеки для вашего компоновщика и все будет хорошо.

Чтобы узнать, какую библиотеку использовать для конкретной функции Win32, обратитесь к документации. Например, возьмите CreateRectRgnIndirect. В нижней части документации приведен список требований, включая заголовочный файл, который объявляет эту функцию, и библиотеку, которая ее определяет.

В этом случае вам предлагается включить Windows.h и ссылку на Gdi32.lib. Очевидно, вы уже сделали первое, потому что иначе вы бы не дошли до ссылки.

0

Моя ошибка была в том, что в моей команде компиляции (libgdi32.a) отсутствовала библиотека, и после этого я не помещал -lgdi32 ПОСЛЕ моего исходного кода, как в:

Неверно (неопределенная ошибка ссылки во время компиляции):

gcc -lgdi32 source.cpp

Правильный:

gcc source.cpp -lgdi32

Узнал благодаря этой странице: http://www.mingw.org/wiki/Specify_the_libraries_for_the_linker_to_use

Ещё вопросы

Сообщество Overcoder
Наверх
Меню