|
15 / 15 / 1
Регистрация: 31.12.2012
Сообщений: 101
|
|
Компиляция серьезной графики под Mingw19.01.2013, 13:38. Показов 3668. Ответов 13
Метки нет (Все метки)
Возьмем для примера gdi+ (c всем остальным у меня получалось абсолютно тоже. только winapi из windows.h пока могу)
пишу элементарный пример, когда довожу его до компиляции, на стадии линковки компилятор чего-то не видит. простой код не привожу, так как пока не спрашиваю "как написать на gdi+ что-то работающее" а спрашиваю "как в mingw вообще хоть что-то с gdi+ откомпилировать"?
0
|
|
| 19.01.2013, 13:38 | |
|
Ответы с готовыми решениями:
13
Компиляция в g++ из MinGW
|
|
1500 / 1146 / 165
Регистрация: 05.12.2011
Сообщений: 2,279
|
|
| 19.01.2013, 13:46 | |
|
алгоритм исправления ошибок линковки примерно такой:
смотрим, какой символ не зарезолвился (скажем имя функции) ищем, в какой либе эта функция. смотрим, подключена ли эта либа к проекту. если нет, подключаем, пробуем снова. если подключена, то ...
0
|
|
|
15 / 15 / 1
Регистрация: 31.12.2012
Сообщений: 101
|
|
| 19.01.2013, 14:08 [ТС] | |
|
Спасибо за быстрый ответ, но поясни подробнее
1_ Либа - в смысле #include или dll на стадии линковки? 2_ Конкретно - скажем у меня явно не находит GpidFree. Что надо проделать?
0
|
|
|
Twilight Parasite
154 / 150 / 7
Регистрация: 21.07.2011
Сообщений: 908
|
|
| 19.01.2013, 14:10 | |
|
SeaMonster, линковка делается с помощью ключа -lимялибы
# include-это препоцессорная директива. Линкеру на нее пофиг.
0
|
|
|
1500 / 1146 / 165
Регистрация: 05.12.2011
Сообщений: 2,279
|
||||||
| 19.01.2013, 14:17 | ||||||
|
да. если дело дошло до линковки, значит все скомпилилось.
но директивы препроцессора тоже могут влиять на линковку. например:
0
|
||||||
|
15 / 15 / 1
Регистрация: 31.12.2012
Сообщений: 101
|
|
| 19.01.2013, 14:32 [ТС] | |
|
Ну и какую конкретно библиотеку dll по какому пути лежащую в mingw надо попробовать прилинковать? Или скачать сначала где-то надо?
0
|
|
|
Twilight Parasite
154 / 150 / 7
Регистрация: 21.07.2011
Сообщений: 908
|
|
| 19.01.2013, 14:44 | |
|
SeaMonster, гуглить мама не учила?
Загугли функцию которая не найдена, и узнай в какой либе лежит. и прилинкуй ту либу.
0
|
|
|
1500 / 1146 / 165
Регистрация: 05.12.2011
Сообщений: 2,279
|
||
| 19.01.2013, 14:46 | ||
|
для линковки нужна lib. длл во премя выполнения понадобится.
по описанному выше алгоритму ищем что не нравится линкеру. сначала это GdipAlloc. находим ссылку: http://msdn.microsoft.com/en-u... s.85).aspx из которой узнаем, что нам нужно GpStatus WINGDIPAPI GdiplusBase void* (operator new)(size_t in_size). Ок, там есть ссылка на это: http://msdn.microsoft.com/en-u... s.85).aspx заходим и и видим:
После сборки бинаря для его запуска ему должна быть доступна Gdiplus.dll Gdiplus.lib подключена к проекту?
0
|
||
|
Twilight Parasite
154 / 150 / 7
Регистрация: 21.07.2011
Сообщений: 908
|
|
| 19.01.2013, 14:51 | |
|
используй консоль.
Нафиг IDE. От IDE польза, только когда работаеш с какой-нить хренью типа Qt(ну шибко они закрутили с moc)
0
|
|
|
15 / 15 / 1
Регистрация: 31.12.2012
Сообщений: 101
|
||||||
| 19.01.2013, 21:24 [ТС] | ||||||
|
Всем спасибо. С добавкой подключения gdiplus.dll в строку компиляции все стало компилиться.
Теперь вопрос. Как передать в конструктор Gdiplus::Image имя файла. Просто const char* компилятор не принимает, пробую так Gdiplus::Image* m_pImage=NULL; m_pImage=new Gdiplus::Image(L"1.jpg"); при вызове второй строки даже не просто "не срабатывает код как надо", а все немедленно виснет Добавлено через 4 часа 45 минут Написал вот так, совсем вручную, чтобы все с именем было под контролем
Добавлено через 26 минут Что мне очень не нравится. Решил попробовать от отчаяния - может дело в сложности статической компиляции и при динамической все запашет? Попробовал - две известных dll-ки программа начала требовать, а вот gdiplus.dll не стала (ну и по прежнему зависает...)
0
|
||||||
|
2838 / 1647 / 254
Регистрация: 03.12.2007
Сообщений: 4,222
|
|
| 19.01.2013, 21:50 | |
|
Весь код покажи. GdiplusStartup не забыл?
1
|
|
|
быдлокодер
1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,705
|
|
| 19.01.2013, 22:33 | |
|
На всякий случай, вдруг пригодится. Алгоримт поиска нужных *.a файлов описан выш. А вот программу я написал, которая делает то же самое;
0
|
|
|
15 / 15 / 1
Регистрация: 31.12.2012
Сообщений: 101
|
|||||||
| 20.01.2013, 02:29 [ТС] | |||||||
|
Вот мой пример
Еще раз всем спасибо, я с Вашей помощью очень здорово продвинулся, но пока считать освоенным мешает бага. В части случаев (примерно явно меньше половины, но наверно больше 10 процентов) программа не срабатывает, т.е. картинку не показывает. В большинстве случаев показывает, но такая нестабильная работа - не дело Добавлено через 2 часа 33 минуты Через *** временно решил проблему, повторяя процедуру 100 раз циклом, тогда безусловно открывается. Но это не дело (совершенно бестолковые тормоза плюс неизвестная ошибка может и в другом месте позже всплыть...) Добавлено через 46 минут На интуиции решил попробовать выводить не сразу на экран, а на специально созданный hdc. Немного поглючило, но когда для этой в общем простой манипуляции все параметры правильно написал - заработало как часы! Видимо дело вот в чем. Я это не совсем понимаю, но в виндовской графики перед выводом на экран чего-либо низкоуровневыми функциями надо его сначала в каком-то смысле "запереть" а потом "открыть". Если же я этого не делал, то половину рисовало как надо, половину не рисовало.... Видимо gdi+ и извратная Graphics.h эмулирующая bgi через winapi в этой части не состыкуются.
0
|
|||||||
|
15 / 15 / 1
Регистрация: 31.12.2012
Сообщений: 101
|
|
| 21.01.2013, 18:39 [ТС] | |
|
вопросы именно по компиляции. Смотрел в сети разные примеры кода, в том числе на сайте микрософт. При компиляции накладки
1. Мелочь. Запись RotateFlipType::Rotate180FlipY (константа из серии констант, определяющих способы поворотов и отражений) мой MinGw не принял(именно не компилировал! до линковки не доходило), но по подсказкам удалось понять, что надо написать Gdiplus::Rotate180FlipY и заработало как надо, но чего он первое не принимал? 2. Хуже и очень нужен ответ что делать. В классе image компилятор говорит, что нет элементарных Height ! Т.е. переменных размера изображения... Это очень мешает дальше создавать код.
0
|
|
| 21.01.2013, 18:39 | |
|
Помогаю со студенческими работами здесь
14
Компиляция в MSYS (MinGW) Mingw компиляция по частям Компиляция под linux с mingw Компиляция библиотеки boost с использованием mingw под винду Компиляция c# в MINGW Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога
Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
|
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
|
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога
В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
|
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога
Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
|
|
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога
Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
|
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога
Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
|
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования.
Часть библиотеки BedvitCOM
Использованы. . .
|
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога
SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
|