Я новичок в C ++ в среде Linux и пытаюсь использовать библиотеку png ++ для проекта. Проблема, с которой я сталкиваюсь, заключается в том, что простая программа, которую я пишу с использованием png ++ incudes, не работает и показывает следующие ошибки
AProg.o: In function `png::info_base::info_base(png::io_base&, png_struct_def*)':
AProg.cpp:(.text._ZN3png9info_baseC2ERNS_7io_baseEP14png_struct_def[_ZN3png9info_baseC5ERNS_7io_baseEP14png_struct_def]+0x21): undefined reference to `png_create_info_struct'
AProg.o: In function `png::info::write() const':
AProg.cpp:(.text._ZNK3png4info5writeEv[png::info::write() const]+0xd4): undefined reference to `png_set_PLTE'
AProg.cpp:(.text._ZNK3png4info5writeEv[png::info::write() const]+0x137): undefined reference to `png_set_tRNS'
AProg.cpp:(.text._ZNK3png4info5writeEv[png::info::write() const]+0x14f): undefined reference to `png_write_info'
AProg.o: In function `png::info::sync_ihdr() const':
AProg.cpp:(.text._ZNK3png4info9sync_ihdrEv[png::info::sync_ihdr() const]+0x79): undefined reference to `png_set_IHDR'
AProg.o: In function `png::end_info::destroy()':
AProg.cpp:(.text._ZN3png8end_info7destroyEv[png::end_info::destroy()]+0x48): undefined reference to `png_destroy_info_struct'
AProg.o: In function `png::end_info::write() const':
AProg.cpp:(.text._ZNK3png8end_info5writeEv[png::end_info::write() const]+0x1a): undefined reference to `png_write_end'
AProg.o: In function `png::io_base::set_swap() const':
AProg.cpp:(.text._ZNK3png7io_base8set_swapEv[png::io_base::set_swap() const]+0x1b): undefined reference to `png_set_swap'
.............. (and it goes on).
Предыстория того, что я сделал до сих пор.
1: у меня gcc / g ++ настроен правильно.
2: я следовал следующим инструкциям ( http://www.techsww.com/tutorials/libraries/libpng/installation/installing_libpng_on_ubuntu_linux.php ) и правильно установите libpng-1.2.50. Результат кажется верным.
Вот так теперь выглядит моя папка usr / local
:/usr/local/include$ ls
libpng12 libpng15 png++ pngconf.h png.h pnglibconf.h
:/usr/local/lib$ ls
libpng12.a libpng12.so libpng12.so.0.50.0 libpng15.la libpng15.so.15 libpng.a libpng.so libpng.so.3.50.0 python2.7
libpng12.la libpng12.so.0 libpng15.a libpng15.so libpng15.so.15.12.0 libpng.la libpng.so.3 pkgconfig
:/usr/local/bin$ ls
eclipse libpng-1.2.50 libpng12-config libpng-1.5.12 libpng15-config libpng-config png++-0.2.5
3: После этого я следовал следующему ( http://www.nongnu.org/pngpp/doc/0.2.5/ ) установить png ++ — 0.2.5 и все пять шагов не дали никаких ошибок.
Но после этого, когда я попытался скомпилировать простую программу (с инструкциями, приведенными на том же сайте: http://www.nongnu.org/pngpp/doc/0.2.5/ ) это не будет компилироваться.
:~/workspace/AProg$ g++ -o AProg AProg.o 'libpng-config --ldflags'
g++: error: libpng-config --ldflags: No such file or directory
Затем я попытался решить проблему, отсканировал ее и дал команду, которая, кажется, прекрасно работает при компиляции, но когда я попытался ее запустить. Я получил ошибку, как упоминалось в верхней части поста
:~/workspace/AProg$ g++ -c AProg.cpp -I/usr/local/include/libpng12 -L/usr/local/lib -lpng -I/usr/local/include/png++
:~/workspace/AProg$
Я прошу прощения за такой длинный пост. Но я просто хотел объяснить все, что связано с моей проблемой. Надеюсь, кто-нибудь поможет мне здесь.
Кажется, что кавычки, которые вы используете в командной строке компоновщика, не правильные, они должны быть единичными обратная цитата:
$ g++ -o AProg AProg.o `libpng-config --ldflags`
Других решений пока нет …