2015-05-09 56 views
2

好吧,在任何人将这个问题标记为重复之前,我已经看过What is an undefined reference/unresolved external symbol error and how do I fix it?和许多其他在线帖子。我已经试过所有的解决方案我来ACOSS但我仍然无法修复这些错误:土壤未解决的外部符号

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 

我使用的是Windows 8系统的Visual Studio 2012我试过重建库,我有五倍检查了我所有的includes和directories.Here是我所拥有的SOIL includes /目录:

>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”。我试着用这个名字来处理它,并得到了同样的错误。

+0

我认为“我试过重建图书馆”意味着你试图用visual-studio重建“soil.lib”图书馆?在给出错误消息中的对象文件扩展名为'.o'的情况下,我会让你有些惊讶(或者至少那是链接器使用的.lib)。 – SleuthEye

回答

0

您可以自己在VS2012/13中构建VC8或VC9解决方案文件。如果你正在构建一个32位应用程序,只要确保你是Win32配置。如果您正在构建64位应用程序,请将配置属性更改为x64。项目建好之后,将你的openGL项目链接到这些生成的SOIL.lib文件,然后你就可以开始了。