2010-06-02 3 views
2

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

ответ

3

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

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

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

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


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

+0

Действительно перекомпилировать этот материал не так сложно - создать проект, добавить все файлы. И больше никаких проблем с разными версиями во время выполнения или что-то в этом роде. – sharptooth

+1

Ну, попробуйте полностью построить «gtkmm' путем« создания проекта и добавления файлов »;) * Иногда все эти внутренние зависимости могут быть настоящей болью в заднице. * –

+0

Возможно, но мы строим zlib и SQLite без каких-либо проблем. – sharptooth