Статическая ссылка на libpng с Visual Studio 2010 - PullRequest
2 голосов
/ 02 июня 2010

Я пытаюсь добавить поддержку PNG в свое приложение и поэтому хочу включить libpng. Я знаю, что для этого нужен zlib, поэтому я скачал и это. Я зашел в папку png / projects / vstudio и открыл решение. Я скомпилировал его, и все прошло отлично. Я добавил несколько заголовков из него в свое приложение и скопировал файлы lib. Моя программа - dll, написанная на c ++, которая позже используется из C #. Когда я запускаю его в C #, он жалуется на то, что не находит мою dll (сложно, если я уберу png часть, она работает нормально). У меня была эта проблема раньше, и это обычно означает, что dll-зависимость неверна.
Теперь ... libpng скомпилировал как некоторые .lib-файлы, так и некоторые .dll-файлы. DLL-файлы больше. Мое единственное предположение, что ему также нужны dll-файлы, но я видел, что люди могут ссылаться на libpng без dll.
Итак, мои вопросы: как я могу скомпилировать libpng (и zlib для этого экземпляра) в просто статические библиотеки и как включить их в мои проекты? Я искал по интернету, и я не мог найти ничего полезного.

1 Ответ

3 голосов
/ 02 июня 2010

Чтобы сделать все ваши библиотеки статичными, вам придется перекомпилировать все "с нуля" как статические библиотеки.

Это просто означает, что вы должны создать набор проектов для каждой библиотеки в вашей последовательности и установить тип вывода на статическая библиотека .

После этого вы должны устранить библиотечные зависимости между самими библиотеками (это означает, что вы должны связать вывод некоторых проектов с другими проектами, например , если ваша библиотека "libpng" использует "libzip", это означает, что вы должны сначала скомпилировать "libzip" и связать этот вывод (статическая библиотека) с вашим проектом "libpng".

В самом конце у вас будет большой набор статических библиотек , скомпилированных для вашей платформы, , которые вы можете использовать в своих проектах.


Также стоит упомянуть, попробуйте поискать более внимательно. Я уверен, что кто-то сделал это, и вам, вероятно, потребуется загрузить пакет файлов .lib для вашей платформы (я знаю, что очень часто "dev" Комплект библиотек включает только библиотеку импорта в паре с соответствующим файлом .dll, но таких энтузиастов, как вы, много:)

...