15 / 15 / 1
Регистрация: 31.12.2012
Сообщений: 101
|
|
1 | |
Компиляция серьезной графики под Mingw19.01.2013, 13:38. Показов 2991. Ответов 13
Метки нет Все метки)
(
Возьмем для примера gdi+ (c всем остальным у меня получалось абсолютно тоже. только winapi из windows.h пока могу)
пишу элементарный пример, когда довожу его до компиляции, на стадии линковки компилятор чего-то не видит. простой код не привожу, так как пока не спрашиваю "как написать на gdi+ что-то работающее" а спрашиваю "как в mingw вообще хоть что-то с gdi+ откомпилировать"?
0
|
|
19.01.2013, 13:38 | |
Ответы с готовыми решениями:
13
Компиляция в g++ из MinGW
Компиляция в MSYS (MinGW) |
1499 / 1145 / 165
Регистрация: 05.12.2011
Сообщений: 2,279
|
|
19.01.2013, 13:46 | 2 |
алгоритм исправления ошибок линковки примерно такой:
смотрим, какой символ не зарезолвился (скажем имя функции) ищем, в какой либе эта функция. смотрим, подключена ли эта либа к проекту. если нет, подключаем, пробуем снова. если подключена, то ... ![]()
0
|
15 / 15 / 1
Регистрация: 31.12.2012
Сообщений: 101
|
|
19.01.2013, 14:08 [ТС] | 3 |
Спасибо за быстрый ответ, но поясни подробнее
1_ Либа - в смысле #include или dll на стадии линковки? 2_ Конкретно - скажем у меня явно не находит GpidFree. Что надо проделать?
0
|
Twilight Parasite
154 / 150 / 7
Регистрация: 21.07.2011
Сообщений: 908
|
|
19.01.2013, 14:10 | 4 |
SeaMonster, линковка делается с помощью ключа -lимялибы
# include-это препоцессорная директива. Линкеру на нее пофиг.
0
|
1499 / 1145 / 165
Регистрация: 05.12.2011
Сообщений: 2,279
|
||||||
19.01.2013, 14:17 | 5 | |||||
да. если дело дошло до линковки, значит все скомпилилось.
но директивы препроцессора тоже могут влиять на линковку. например:
0
|
15 / 15 / 1
Регистрация: 31.12.2012
Сообщений: 101
|
|
19.01.2013, 14:32 [ТС] | 6 |
Ну и какую конкретно библиотеку dll по какому пути лежащую в mingw надо попробовать прилинковать? Или скачать сначала где-то надо?
0
|
Twilight Parasite
154 / 150 / 7
Регистрация: 21.07.2011
Сообщений: 908
|
|
19.01.2013, 14:44 | 7 |
SeaMonster, гуглить мама не учила?
Загугли функцию которая не найдена, и узнай в какой либе лежит. и прилинкуй ту либу.
0
|
1499 / 1145 / 165
Регистрация: 05.12.2011
Сообщений: 2,279
|
|
19.01.2013, 14:46 | 8 |
для линковки нужна 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 | 9 |
используй консоль.
Нафиг IDE. От IDE польза, только когда работаеш с какой-нить хренью типа Qt(ну шибко они закрутили с moc)
0
|
15 / 15 / 1
Регистрация: 31.12.2012
Сообщений: 101
|
||||||
19.01.2013, 21:24 [ТС] | 10 | |||||
Всем спасибо. С добавкой подключения 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
|
2832 / 1641 / 254
Регистрация: 03.12.2007
Сообщений: 4,222
|
|
19.01.2013, 21:50 | 11 |
Весь код покажи. GdiplusStartup не забыл?
1
|
быдлокодер
1722 / 909 / 106
Регистрация: 04.06.2008
Сообщений: 5,655
|
|
19.01.2013, 22:33 | 12 |
На всякий случай, вдруг пригодится. Алгоримт поиска нужных *.a файлов описан выш. А вот программу я написал, которая делает то же самое;
0
|
15 / 15 / 1
Регистрация: 31.12.2012
Сообщений: 101
|
||||||
20.01.2013, 02:29 [ТС] | 13 | |||||
Ты телепат! Именно "забыл", точнее даже не знал, что надо... Поискал про него и всё в первом приближении заработало.
Вот мой пример
Еще раз всем спасибо, я с Вашей помощью очень здорово продвинулся, но пока считать освоенным мешает бага. В части случаев (примерно явно меньше половины, но наверно больше 10 процентов) программа не срабатывает, т.е. картинку не показывает. В большинстве случаев показывает, но такая нестабильная работа - не дело Добавлено через 2 часа 33 минуты Через *** временно решил проблему, повторяя процедуру 100 раз циклом, тогда безусловно открывается. Но это не дело (совершенно бестолковые тормоза плюс неизвестная ошибка может и в другом месте позже всплыть...) Добавлено через 46 минут На интуиции решил попробовать выводить не сразу на экран, а на специально созданный hdc. Немного поглючило, но когда для этой в общем простой манипуляции все параметры правильно написал - заработало как часы! Видимо дело вот в чем. Я это не совсем понимаю, но в виндовской графики перед выводом на экран чего-либо низкоуровневыми функциями надо его сначала в каком-то смысле "запереть" а потом "открыть". Если же я этого не делал, то половину рисовало как надо, половину не рисовало.... Видимо gdi+ и извратная Graphics.h эмулирующая bgi через winapi в этой части не состыкуются.
0
|
15 / 15 / 1
Регистрация: 31.12.2012
Сообщений: 101
|
|
21.01.2013, 18:39 [ТС] | 14 |
вопросы именно по компиляции. Смотрел в сети разные примеры кода, в том числе на сайте микрософт. При компиляции накладки
1. Мелочь. Запись RotateFlipType::Rotate180FlipY (константа из серии констант, определяющих способы поворотов и отражений) мой MinGw не принял(именно не компилировал! до линковки не доходило), но по подсказкам удалось понять, что надо написать Gdiplus::Rotate180FlipY и заработало как надо, но чего он первое не принимал? 2. Хуже и очень нужен ответ что делать. В классе image компилятор говорит, что нет элементарных Height ! Т.е. переменных размера изображения... Это очень мешает дальше создавать код.
0
|
21.01.2013, 18:39 | |
Помогаю со студенческими работами здесь
14
Mingw компиляция по частям Компиляция под linux с mingw Компиляция библиотеки boost с использованием mingw под винду Компиляция c# в MINGW Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |