Re: 24|undefined reference to `__imp_SaveDC'|
Добавлено: 22 окт 2015, 19:26
В посте #22 линковка динамическая, ошибки нет, имя указателя на функцию совпадает с тем именем, на которое ругался линкер. А вот попробуйте те ка создать свою DLL, использующее его тестовое приложение, указать библиотеку импорта в свойствах проекта, скомпилировать оба проекта, запустить тестовое приложение, а потом готовую DLL стереть и ещё раз запустить то же самое тестовое приложение. Оно будет ругаться на отсутствие файла DLL. И не надо кивать на статическую линковку рантайма билдером, это в лучшем случае создание "на лету" целевой LIB на основе заменяемой ею DLL. Но целиком сам файл DLL со своим заголовком с файлом приложения в один не сливается, а вместо этого линкуются выдранные из DLL отдельные функции. И делается это совсем не так, просто добавить библиотеку в свойства проекта для этого не достаточно, надо поставить галочку статической линковки стандартного рантайма. Это если билдер вообще использует для этой цели именно DLL, а то ведь могли и заранее приложить LIB версии целевых библиотек и просто линковать или их, или DLL. Ну да, можно и функции выдрать, формат то известен. Только это уже будет не DLL, она лишь возьмётся за основу.Romeo писал(а):И да, ответ на твой вопрос - DLL можно линковать как статически, там и динамически. В первом посте, где ты жаловался на ошибки линкера, происходит как раз статическая линковка.