Страница 1 из 4

24|undefined reference to `__imp_SaveDC'|

Добавлено: 09 сен 2015, 05:31
Сионист
Пишет ошибку
24|undefined reference to `__imp_SaveDC'|
, при подключении C:\CodeBlocks\mingw64\x86_64-w64-mingw32\lib\libgdi32.a ошибка меняется на
|23|undefined reference to `_Unwind_Resume'|
, но в той же строке. Как с этим бороться? Можно ли GDI32.dll загрузить явно и без статических либ? Как? Как её потом закрыть?

Re: 24|undefined reference to `__imp_SaveDC'|

Добавлено: 08 окт 2015, 10:04
Din666
imp говорит о том что imported то есть с динамики (DLL)

What hosting to choose?

Добавлено: 15 окт 2015, 00:24
GeorgeSoca
On our web, you can feel safe! Besides we use mirrored hard drives on all of our servers so we also take backup twice a day on separate servers. We use ISPmanager as the control panel. ISPmanager is a control panel that makes it easy to administer its Web site. With us you can place as many websites and domains you wish for a hosting account.
virtual hosting

Re: 24|undefined reference to `__imp_SaveDC'|

Добавлено: 15 окт 2015, 06:40
Сионист
Din666 писал(а):imp говорит о том что imported то есть с динамики (DLL)
Читаем мой пост:
Сионист писал(а):GDI32.dll
. Много думаем.

Re: 24|undefined reference to `__imp_SaveDC'|

Добавлено: 15 окт 2015, 10:08
Romeo
Походу, почитать нужно именно тебе, Сионист. Вопрос некорректен в принципе. Залинковать "напрямую" dll мы не можем никак. В любом случае нам нужна так называемая интерфейсная статитеческая библиотека, которая содержит функции с префиксом imp_, которые просто делигируют вызов в соответствующие функции без префикса imp, расположенные в dll.

Теперь по поводу самой ошибки. Возвращаемся к вопросу об использовании поисковика. Запускаем гугл и пишем в нём "_Unwind_Resume mingw". Гугл выдаёт добрый десяток ссылок, где знающие люди говорят об одном и том же - вы используете версию компилятора не с тем ABI. К примеру, вот первая ссылка, где чёрным по белому написано, что линковка осуществляется с либой, собранной другой версией компилятора, либо вообще другим компилятором, после чего человек, который задавал вопрос, пишет, что действительно решил проблему, пересобрав загружаемую библиотеку своим компилятором (благо исходники были в наличии).

Я намеренно не отвечал на твой первоначальный пост, так как ещё тогда в начале сентября, я вбил в поисковик запрос, прочитал ответ и решил, что нужно дать тебе возможность повариться в собственном соку и всё-таки дойти самому до такого простого решения, как использование поисковика. Тем более при том, что работу с поисковиком мы обсуждали уже неоднократно в соседних темах. Оказалось, мои надежды были необоснованны, а все усилия по попыткам привить умение пользоваться гуглом тщетными.

Конкретно по проблеме. Переустанови MinGW. В предыдущей теме я уже предлагал это сделать. Воспользуйся утилитой mingw-get-setup, чтобы не мучиться с вопросом о том, какие пакейджи нужны, а какие нет - дефолтный набор пакейджей, которые вытаскивает утилита, покрывает большинство нужд.

Re: 24|undefined reference to `__imp_SaveDC'|

Добавлено: 16 окт 2015, 11:04
Сионист
Romeo писал(а):Походу, почитать нужно именно тебе, Сионист.
Ага. Ответы. Но то, что библиотека GDI32 - динамическая, уже указано в моём посте. Так что указывать на это не нужно. Так что некоторым не мешало бы для начала прочитать вопрос.

Re: 24|undefined reference to `__imp_SaveDC'|

Добавлено: 16 окт 2015, 11:06
Сионист
Romeo писал(а):Вопрос некорректен в принципе. Залинковать "напрямую"
Где у меня хоть слово о прямой? Я спрашивал только об отказе от статических библиотек импорта. И что Вы понимаете под прямой? Я чего то этого не понял.

Re: 24|undefined reference to `__imp_SaveDC'|

Добавлено: 16 окт 2015, 11:09
Сионист
Romeo писал(а): В любом случае нам нужна так называемая интерфейсная статитеческая библиотека, которая содержит функции с префиксом imp_, которые просто делигируют вызов в соответствующие функции без префикса imp, расположенные в dll.
Ваще то не в любом, я надыбал решение: самому объявить нужные указатели и присвоить их с помощью GetProcAdress, либу загрузить явно с помощью LoadLibrary и FreeLibrary явно её освободить.

Re: 24|undefined reference to `__imp_SaveDC'|

Добавлено: 16 окт 2015, 11:22
Romeo
Сионист писал(а):Где у меня хоть слово о прямой?
Вот:
Сионист писал(а):Можно ли GDI32.dll загрузить явно и без статических либ?
Сионист писал(а):Я спрашивал только об отказе от статических библиотек импорта. И что Вы понимаете под прямой? Я чего то этого не понял.
Нет, ты спрашивал именно о явной загрузке DLL. Слова "явно" и "напрямую" ведь синонимы, или я неправ? Или ты можешь сейчас напрячься и придумать явную, но не прямую загрузку DLL? Господи, как же мне надоела игра в "да, я ляпнул глупость, но это не важно, а важно то, что я под этой глупостью не одну глупость подразумевал, а другую"... Да просто прямо скажи, что сморозил глупость и пойдём дальше. Разговор будет куда более продуктивным тогда.

Господа, ещё раз, специально для тех, кто не понимает, как работает линкер. Загрузить DLL напрямую без статической либы нельзя никак! В любом случае нужна или полноценная статическая библиотека с имплеменатацией, или интерфейсная статическая библиотека с функциями-делегатами, если у нас есть DLL. Причина очень проста: линкер ничего не знает ни о каких DLL и умеет работать только с либками.

Re: 24|undefined reference to `__imp_SaveDC'|

Добавлено: 16 окт 2015, 11:42
Сионист
Romeo писал(а):Слова "явно" и "напрямую" ведь синонимы, или я неправ?
Также как "машина" и "чёрная".