2010-12-31 3 views
2

Я пытаюсь использовать несколько библиотек с открытым исходным кодом, например libpng, в моем проекте VC++. Я использовал их в среде Linux без проблем, но я не знаю, как заставить их работать в среде VC++. Вот что я пробовал:Работа с VC и MinGW

  1. Я установил Libpng для пакета Win32 от SF (я также установил ZLIB так же BTW). Я вижу png.h в Program Files \ GnuWin32 \ include, но когда я его включаю, компилятор говорит, что для него требуется unistd.h. Я знаю, что это заголовок для системных вызовов POSIX, поэтому Windows его не будет.

  2. Я установил Cygwin, но потом понял, что это хорошо только для построения исходных линукс кодов на окнах с помощью GCC, вместо того, чтобы использовать MS VC (или я ошибаюсь?)

  3. Я установил MinGW, но мне кажется, MinGW предназначен для использования gcc (или я ошибаюсь?). MinGW действительно поставляется с unistd.h, но этот заголовок ссылается на файл sys/types.h MinGW, который из linux, а MSVC имеет свои собственные sys/types.h, поэтому компилятор не знает, что использовать. Эти два файла определяют разные вещи, и ни один из них не может охватывать оба варианта, поэтому включение их либо недостаточно для компиляции всего проекта.

К этому моменту это кажется довольно глупой проблемой #include, но я просто не могу понять, как правильно это сделать. Я действительно крест-набросок noob. Может быть, я ошибаюсь с самого начала ...

Итак, как мне идти? Каков ваш стандартный способ использования библиотек linux в VC++?

Возможно, я могу построить с помощью gcc с помощью MinGW или Cygwin для создания исполняемых файлов Windows, но я бы предпочел, чтобы я мог строить с VC++ из-за моей существующей базы кода. Спасибо за любую помощь!

ответ

0

Очевидно, что вы должны скачать libpng.lib/dll и заголовочные файлы для MS VC.

Если у вашего пакета есть структура папки, похожая на GnuWin32, это определенно не для MS VC.

Заканчивать распределение OpenCV (http://sourceforge.net/projects/opencvlibrary/files/opencv-win/2.2/)

Он содержит VC сборки Libpng и других библиотек формата изображения.

+0

Спасибо. Я уверен, что это жизнеспособное решение, но, похоже, довольно утомительно искать конкретные сборки Win32 для каждой библиотеки с открытым исходным кодом, которую я использую. Почему я не могу построить себя из исходного кода? Разве это не точка открытого источника? Я уверен, что должно быть более общее решение ... – fang

+0

Знаете, типичные библиотеки с открытым исходным кодом используют средства автоматической генерации конфигурации, не поддерживающие MS VC, поэтому вы должны вручную генерировать конфигурацию VC и файлы заголовков. делать. – 9dan

+0

Хммм, правда, очень немногие в сообществе с открытым исходным кодом заботятся о VC. Раньше я думал, что большинство проектов с открытым исходным кодом независимы от платформы, но на самом деле это не так, верно? – fang

0

общее решение заключается в создании таких библиотек по GCC (Cygwin или MinGW, не имеет значения), получать и LIBS связь с ними из проекта VC

+0

Спасибо. Но я не мог сделать эту работу. Я могу построить с Cygwin, но заголовок ссылается на специфические для Linux такие вещи, как unistd.h, поэтому он не может использоваться в VC. Я что-то упускаю? – fang

+0

MinGW/include/unistd.h, добавьте это в свои поисковые каталоги –

+0

Я пробовал это, но, как я объяснил в исходном посте, он конфликтует с заголовками окон на sys/types.h. В основном оба определяют sys/types.h и не работают для другой среды. Я не знаю, что я должен сделать, чтобы скомпилировать его. – fang