2014-12-14 2 views
2

Я пытаюсь написать простой файл PNG, используя libpng в C, используя VS2013. Я установил libpng из Nuget и включил png.h, но я не могу скомпилировать. Я получаю это как свой вывод:Visual Studio 2013 и libpng

1>main.obj : error LNK2019: unresolved external symbol png_create_write_struct referenced in function writeImage 
1>main.obj : error LNK2019: unresolved external symbol png_set_longjmp_fn referenced in function writeImage 
1>main.obj : error LNK2019: unresolved external symbol png_create_info_struct referenced in function writeImage 
1>main.obj : error LNK2019: unresolved external symbol png_write_info referenced in function writeImage 
1>main.obj : error LNK2019: unresolved external symbol png_destroy_write_struct referenced in function writeImage 
1>main.obj : error LNK2019: unresolved external symbol png_init_io referenced in function writeImage 
1>main.obj : error LNK2019: unresolved external symbol png_free_data referenced in function writeImage 
1>main.obj : error LNK2019: unresolved external symbol png_set_IHDR referenced in function writeImage 
1>main.obj : error LNK2019: unresolved external symbol png_set_text referenced in function writeImage 

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

+0

ВС видит файл заголовка. На этапе ссылки вам нужно иметь что-то строку «-Lpathtolib -llibrootname» – user3629249

ответ

1

Помимо включения png.h, вы также должны связаться с соответствующей библиотекой импорта (вероятно, называется libpng.lib или что-то в этом роде). В Visual Studio вы добавили бы это в Настройки проекта → Линкера → Вход → Дополнительные зависимости.

+0

Фактически в этом случае это не проблема с отсутствующей библиотекой - идея NuGet заключается в том, что (например, 'pkg-config' под Linux) библиотеки ссылка включена автоматически. В этом случае наиболее вероятная проблема заключается в том, что пакет NuGet необходимо обновить для новой версии набора инструментов (поэтому он не снабжает имена файлов библиотек, поскольку он не распознает текущий набор инструментов.) Это, похоже, происходит при использовании версии Visual Studio новее, чем пакет. Я отправил ответ по вышеуказанному дублирующему вопросу с подробностями о том, как это сделать. – Malvineous