Хорошо, прежде чем кто-либо отметит этот вопрос как дубликат, я просмотрел What is an undefined reference/unresolved external symbol error and how do I fix it? и многие другие онлайн-сообщения. Я перепробовал все решения я пришел, но я поперек сечения до сих пор не может исправить эти ошибки:SOIL нерешенные внешние символы
1>SOIL.lib(stb_image_aug.o) : error LNK2019: unresolved external symbol __alloca referenced in function _stbi_zlib_decode_noheader_buffer
1>SOIL.lib(image_helper.o) : error LNK2019: unresolved external symbol _sqrtf referenced in function _RGBE_to_RGBdivA2
Я использую Visual Studio 2012 на Windows 8. Я пытался восстанавливать библиотеку, и я пятикратно проверил все мои включенные и каталоги. Вот мои SOIL включает/каталог у меня:
>Configuration Properties->VC++ Directories->Include Directories: "C:\SOIL\Simple OpenGL Image Library\src
>Configuration Properties->VC++ Directories->Library Directories: "C:\SOIL\Simple OpenGL Image Library\lib
>Congiguration Properties->Linker->Input->Additional Dependencies: "SOIL.lib"
И вот мой код. Функция SOIL_load_image является то, что вызывает ошибки:
#include <Windows.h>
#include <GL/glut.h>
#include "glext.h"
#include <SOIL.h>
void glEnable2D(void);
void display();
void glDisable2D(void);
GLuint tex;
/* Main function: GLUT runs as a console application starting at main() */
int main(int argc, char** argv)
{
glutInit(&argc, argv); // Initialize GLUT
glutCreateWindow("OpenGL Setup Test"); // Create a window with the given title
glutInitWindowSize(320, 320); // Set the window's initial width & height
glutInitWindowPosition(50, 50); // Position the window's initial top-left corner
//Texture
glGenTextures(1, &tex);
glBindTexture(GL_TEXTURE_2D, tex);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_BORDER);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_BORDER);
float color[] = { 1.0f, 0.0f, 0.0f, 1.0f };
glTexParameterfv(GL_TEXTURE_2D, GL_TEXTURE_BORDER_COLOR, color);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
int width, height;
unsigned char* image = SOIL_load_image("Resources/Sprites/playerCharacter.png", &width, &height, 0, SOIL_LOAD_RGB);
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, width, height, 0, GL_RGB, GL_UNSIGNED_BYTE, image);
SOIL_free_image_data(image);
//Texture
glutDisplayFunc(display); // Register display callback handler for window re-paint
glutMainLoop(); // Enter the infinitely event-processing loop
return 0;
}
Я работал над этим весь день, и я не мог понять, что я делаю неправильно, и это было очень сложно. Примечание. Я знаю, что исходное имя SOIL.lib - «libSOIL.a». Я пробовал работать с этим именем и получил те же ошибки.
Я полагаю, что «я пытался перестроить библиотеку» означает, что вы попытались перестроить библиотеку 'soil.lib' с визуальной студией? Я был бы несколько удивлен, если бы вы это сделали (или, по крайней мере, это .lib, который использовался компоновщиком), учитывая расширение .o' для объектных файлов в сообщении об ошибке, которое вы указали. – SleuthEye