gpt4 book ai didi

c++ - SOIL 未解析的外部符号

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:18:24 28 4
gpt4 key购买 nike

好的,在任何人将此问题标记为重复之前,我已经查看了 What is an undefined reference/unresolved external symbol error and how do I fix it?以及许多其他在线帖子。我已经尝试了我遇到的所有解决方案,但我仍然无法修复这些错误:

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。我尝试重建库,并且对我的所有包含和目录进行了五次检查。这是我拥有的 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”。我尝试使用该名称来处理它,但遇到了同样的错误。

最佳答案

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

关于c++ - SOIL 未解析的外部符号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30145555/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com