Форум программистов, компьютерный форум, киберфорум
C/C++: IDE, инструментарий
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.78/9: Рейтинг темы: голосов - 9, средняя оценка - 4.78
162 / 6 / 2
Регистрация: 09.01.2019
Сообщений: 92
1

Как собрать DLL версию libpng

27.06.2022, 20:50. Показов 1820. Ответов 2

Author24 — интернет-сервис помощи студентам
Недавно на форуме задавал вопрос по сборке и линковке libpng CMake`ом, получил решение и оно отлично работает - но только для сборки либы в статичном виде. Попытка собрать её же в SHARED виде оканчивается ошибками линковки. Вопрос, что я делаю не так? Текущий CMakeLists.txt:

cmake_minimum_required(VERSION 3.16 FATAL_ERROR)

set(PROJECT_NAME test)
project(${PROJECT_NAME} VERSION 1.0.0 LANGUAGES CXX)

include_directories(${CMAKE_CURRENT_SOURCE_DIR}/zlib ${CMAKE_CURRENT_BINARY_DIR}/zlib)
include_directories(${CMAKE_CURRENT_SOURCE_DIR}/libpng ${CMAKE_CURRENT_BINARY_DIR}/libpng)

set(PNG_BUILD_ZLIB ON CACHE BOOL "" FORCE)
set(PNG_SHARED ON CACHE BOOL "" FORCE)
set(PNG_TESTS OFF CACHE BOOL "" FORCE)
set(ZLIB_INCLUDE_DIR ${zlib_SOURCE_DIR} ${zlib_BINARY_DIR})

add_subdirectory(zlib)
add_subdirectory(libpng)
Если установить PNG_SHARED как OFF, прекрасно собирается png_static, иначе выдаёт ошибки:

png.obj : error LNK2019: unresolved external symbol inflateReset referenced in function png_reset_zstream [D:\Projects\
temp\build\libpng\png.vcxproj]
pngrutil.obj : error LNK2001: unresolved external symbol inflateReset [D:\Projects\temp\build\libpng\png.vcxproj]
png.obj : error LNK2019: unresolved external symbol adler32 referenced in function png_compare_ICC_profile_with_sRGB [D
:\Projects\temp\build\libpng\png.vcxproj]
png.obj : error LNK2019: unresolved external symbol crc32 referenced in function png_calculate_crc [D:\Projects\temp\bu
ild\libpng\png.vcxproj]
pngread.obj : error LNK2019: unresolved external symbol inflateEnd referenced in function png_destroy_read_struct [D:\P
rojects\temp\build\libpng\png.vcxproj]
pngrutil.obj : error LNK2019: unresolved external symbol inflate referenced in function png_inflate [D:\Projects\temp\b
uild\libpng\png.vcxproj]
pngrutil.obj : error LNK2019: unresolved external symbol inflateReset2 referenced in function png_inflate_claim [D:\Pro
jects\temp\build\libpng\png.vcxproj]
pngrutil.obj : error LNK2019: unresolved external symbol inflateInit2_ referenced in function png_inflate_claim [D:\Pro
jects\temp\build\libpng\png.vcxproj]
pngrutil.obj : error LNK2019: unresolved external symbol inflateValidate referenced in function png_inflate_claim [D:\P
rojects\temp\build\libpng\png.vcxproj]
pngwrite.obj : error LNK2019: unresolved external symbol deflateEnd referenced in function png_destroy_write_struct [D:
\Projects\temp\build\libpng\png.vcxproj]
pngwutil.obj : error LNK2001: unresolved external symbol deflateEnd [D:\Projects\temp\build\libpng\png.vcxproj]
pngwutil.obj : error LNK2019: unresolved external symbol deflate referenced in function png_compress_IDAT [D:\Projects\
temp\build\libpng\png.vcxproj]
pngwutil.obj : error LNK2019: unresolved external symbol deflateReset referenced in function png_deflate_claim [D:\Proj
ects\temp\build\libpng\png.vcxproj]
pngwutil.obj : error LNK2019: unresolved external symbol deflateInit2_ referenced in function png_deflate_claim [D:\Pro
jects\temp\build\libpng\png.vcxproj]
D:\Projects\temp\build\libpng\Release\libpng16.dll : fatal error LNK1120: 12 unresolved externals [D:\Projects\temp\bui
ld\libpng\png.vcxproj]
Building Custom Rule D:/Projects/temp/libpng/CMakeLists.txt
png-fix-itxt.c
png-fix-itxt.obj : error LNK2019: unresolved external symbol crc32 referenced in function main [D:\Projects\temp\build\
libpng\png-fix-itxt.vcxproj]
D:\Projects\temp\build\libpng\Release\png-fix-itxt.exe : fatal error LNK1120: 1 unresolved externals [D:\Projects\temp\
build\libpng\png-fix-itxt.vcxproj]
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
27.06.2022, 20:50
Ответы с готовыми решениями:

Как множество dll собрать в один dll или exe файл?
Сделал тестовый проектик по работе с БД (Entity Framework), скомпилировал и как глянул в папку...

Как собрать продакшен версию сайта?
Добрый день. Подскажите как и чем собирать сайты. Что требуется собрать css в кучки....

Как собрать сборку dll?
Добрый день! Я решил отредактировать свой dll файл, который является частью мода для гта5. Сначала...

Как правильно собрать DLL ?
У меня был проект консольного приложения. Потребовалось данное приложение преобразовать в DLL....

Как собрать dll из PJSIP
Добрый день. Вот библиотека PJSIP]. Мне нужно ее скомпилировать в библиотеку. Запускаю...

2
Модератор
Эксперт Java
2558 / 1094 / 375
Регистрация: 11.08.2017
Сообщений: 3,332
27.06.2022, 21:32 2
Надо не забывать линковать zlib и сам png, который тоже можно собрать в 2 вариантах
0
162 / 6 / 2
Регистрация: 09.01.2019
Сообщений: 92
30.06.2022, 10:42  [ТС] 3
Тема закрыта, решение в Как собрать pnglib средствами CMake
0
30.06.2022, 10:42
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
30.06.2022, 10:42
Помогаю со студенческими работами здесь

Как собрать DLL со статической загрузкой?
Я пишу ОС на cpp(Code Blocks gcc-g++) + fasm. Как мне собрать DLL со статической загрузкой...

Как собрать проект со всеми DLL?
Не запускается программа на другом компе. Изначально построила решение. В реализе появилось все....

Как собрать программу в dll файлы?
Здраствуйте друзья. У меня такой вопрос: 1. Как собрать свою программу не в exe файл, а в пару...

Как собрать проект в .exe файл, а не в dll?
Я работаю над проектом(консольным) по сути полностью построенном на .NET и не могу понять почему...

Как собрать приложение из исполняемого файла и нескольких DLL
всем привет сори за тупой вопрос: Мне нужно создать сборку. для проекта я создавал отдельные DLL....


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru