Ошибка png.h, C++
У меня есть код: png_loading.cpp
#include <iostream>
#include <png.h>
#define GLEW_STATIC
#include <GL/glew.h>
#include <GLFW/glfw3.h>
#include "png_loading.h"
#include "Texture.h"
int _png_load(const char* file, int* width, int* height) {
FILE* f;
int is_png, bit_depth, color_type, row_bytes;
png_infop info_ptr, end_info;
png_uint_32 t_width, t_height;
png_byte header[8], * image_data;
png_bytepp row_pointers;
png_structp png_ptr;
GLuint texture;
int alpha;
if (fopen_s(&f, file, "rb") != 0) {
return 0;
}
fread(header, 1, 8, f);
is_png = !png_sig_cmp(header, 0, 8);
if (!is_png) {
fclose(f);
return 0;
}
png_ptr = png_create_read_struct(PNG_LIBPNG_VER_STRING, NULL,
NULL, NULL);
if (!png_ptr) {
fclose(f);
return 0;
}
info_ptr = png_create_info_struct(png_ptr);
if (!info_ptr) {
png_destroy_read_struct(&png_ptr, (png_infopp)NULL,
(png_infopp)NULL);
fclose(f);
return 0;
}
end_info = png_create_info_struct(png_ptr);
if (!end_info) {
png_destroy_read_struct(&png_ptr, (png_infopp)NULL,
(png_infopp)NULL);
fclose(f);
return 0;
}
if (setjmp(png_jmpbuf(png_ptr))) {
png_destroy_read_struct(&png_ptr, &info_ptr, &end_info);
fclose(f);
return 0;
}
png_init_io(png_ptr, f);
png_set_sig_bytes(png_ptr, 8);
png_read_info(png_ptr, info_ptr);
png_get_IHDR(png_ptr, info_ptr, &t_width, &t_height, &bit_depth,
&color_type, NULL, NULL, NULL);
*width = t_width;
*height = t_height;
png_read_update_info(png_ptr, info_ptr);
row_bytes = png_get_rowbytes(png_ptr, info_ptr);
image_data = (png_bytep)malloc(row_bytes * t_height * sizeof(png_byte));
if (!image_data) {
png_destroy_read_struct(&png_ptr, &info_ptr, &end_info);
fclose(f);
return 0;
}
row_pointers = (png_bytepp)malloc(t_height * sizeof(png_bytep));
if (!row_pointers) {
png_destroy_read_struct(&png_ptr, &info_ptr, &end_info);
free(image_data);
fclose(f);
return 0;
}
for (unsigned int i = 0; i < t_height; ++i) {
row_pointers[t_height - 1 - i] = image_data + i * row_bytes;
}
png_read_image(png_ptr, row_pointers);
switch (png_get_color_type(png_ptr, info_ptr)) {
case PNG_COLOR_TYPE_RGBA:
alpha = GL_RGBA;
break;
case PNG_COLOR_TYPE_RGB:
alpha = GL_RGB;
break;
default:
printf("Color type %d not supported!\n",
png_get_color_type(png_ptr, info_ptr));
png_destroy_read_struct(&png_ptr, &info_ptr, &end_info);
return 0;
}
glGenTextures(1, &texture);
glBindTexture(GL_TEXTURE_2D, texture);
glPixelStorei(GL_UNPACK_ALIGNMENT, 1);
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, t_width, t_height, 0,
alpha, GL_UNSIGNED_BYTE, (GLvoid*)image_data);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
glBindTexture(GL_TEXTURE_2D, 0);
png_destroy_read_struct(&png_ptr, &info_ptr, &end_info);
free(image_data);
free(row_pointers);
fclose(f);
return texture;
}
Texture* load_texture(std::string filename) {
int width, height;
GLuint texture = _png_load(filename.c_str(), &width, &height);
if (texture == 0) {
std::cerr << "Could not load texture " << filename << std::endl;
return nullptr;
}
return new Texture(texture, width, height);
}
png_loading.h
#ifndef LOADERS_PNG_LOADING_H_
#define LOADERS_PNG_LOADING_H_
#include <string>
class Texture;
extern Texture* load_texture(std::string filename);
#endif
И почему-то у меня куча ошибок
Серьезность Код Описание Проект Файл Строка Состояние подавления Подробности
Ошибка LNK2019 ссылка на неразрешенный внешний символ png_get_IHDR в функции "int __cdecl _png_load(char const *,int *,int *)" (?_png_load@@YAHPEBDPEAH1@Z). Minecraft C:\Users\Kirill\OneDrive\Документы\C++\Minecraft\png_loading.obj 1
Ошибка LNK2019 ссылка на неразрешенный внешний символ png_set_sig_bytes в функции "int __cdecl _png_load(char const *,int *,int *)" (?_png_load@@YAHPEBDPEAH1@Z). Minecraft C:\Users\Kirill\OneDrive\Документы\C++\Minecraft\png_loading.obj 1
Ошибка LNK2019 ссылка на неразрешенный внешний символ png_sig_cmp в функции "int __cdecl _png_load(char const *,int *,int *)" (?_png_load@@YAHPEBDPEAH1@Z). Minecraft C:\Users\Kirill\OneDrive\Документы\C++\Minecraft\png_loading.obj 1
Ошибка LNK2019 ссылка на неразрешенный внешний символ png_create_read_struct в функции "int __cdecl _png_load(char const *,int *,int *)" (?_png_load@@YAHPEBDPEAH1@Z). Minecraft C:\Users\Kirill\OneDrive\Документы\C++\Minecraft\png_loading.obj 1
Ошибка LNK2019 ссылка на неразрешенный внешний символ png_set_longjmp_fn в функции "int __cdecl _png_load(char const *,int *,int *)" (?_png_load@@YAHPEBDPEAH1@Z). Minecraft C:\Users\Kirill\OneDrive\Документы\C++\Minecraft\png_loading.obj 1
Ошибка LNK2019 ссылка на неразрешенный внешний символ png_create_info_struct в функции "int __cdecl _png_load(char const *,int *,int *)" (?_png_load@@YAHPEBDPEAH1@Z). Minecraft C:\Users\Kirill\OneDrive\Документы\C++\Minecraft\png_loading.obj 1
Ошибка LNK2019 ссылка на неразрешенный внешний символ png_read_info в функции "int __cdecl _png_load(char const *,int *,int *)" (?_png_load@@YAHPEBDPEAH1@Z). Minecraft C:\Users\Kirill\OneDrive\Документы\C++\Minecraft\png_loading.obj 1
Ошибка LNK2019 ссылка на неразрешенный внешний символ png_read_update_info в функции "int __cdecl _png_load(char const *,int *,int *)" (?_png_load@@YAHPEBDPEAH1@Z). Minecraft C:\Users\Kirill\OneDrive\Документы\C++\Minecraft\png_loading.obj 1
Ошибка LNK2019 ссылка на неразрешенный внешний символ png_read_image в функции "int __cdecl _png_load(char const *,int *,int *)" (?_png_load@@YAHPEBDPEAH1@Z). Minecraft C:\Users\Kirill\OneDrive\Документы\C++\Minecraft\png_loading.obj 1
Ошибка LNK2019 ссылка на неразрешенный внешний символ png_destroy_read_struct в функции "int __cdecl _png_load(char const *,int *,int *)" (?_png_load@@YAHPEBDPEAH1@Z). Minecraft C:\Users\Kirill\OneDrive\Документы\C++\Minecraft\png_loading.obj 1
Ошибка LNK2019 ссылка на неразрешенный внешний символ png_init_io в функции "int __cdecl _png_load(char const *,int *,int *)" (?_png_load@@YAHPEBDPEAH1@Z). Minecraft C:\Users\Kirill\OneDrive\Документы\C++\Minecraft\png_loading.obj 1
Ошибка LNK2019 ссылка на неразрешенный внешний символ png_get_rowbytes в функции "int __cdecl _png_load(char const *,int *,int *)" (?_png_load@@YAHPEBDPEAH1@Z). Minecraft C:\Users\Kirill\OneDrive\Документы\C++\Minecraft\png_loading.obj 1
Ошибка LNK2019 ссылка на неразрешенный внешний символ png_get_color_type в функции "int __cdecl _png_load(char const *,int *,int *)" (?_png_load@@YAHPEBDPEAH1@Z). Minecraft C:\Users\Kirill\OneDrive\Документы\C++\Minecraft\png_loading.obj 1
Я делаю майнкрафт по туториалу и вообще не понимаю че за ошибка.