我不知道为什么这样说:
未定义的引用"SOIL_load_OGL_texture
这是代码:
GLuint loadtex( const char* texname )
{
GLuint texture = SOIL_load_OGL_texture(
texname,
SOIL_LOAD_AUTO,
SOIL_CREATE_NEW_ID,
SOIL_FLAG_MIPMAPS | SOIL_FLAG_INVERT_Y | SOIL_FLAG_NTSC_SAFE_RGB | SOIL_FLAG_COMPRESS_TO_DXT
);
glBindTexture( GL_TEXTURE_2D, texture );
glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR );
glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR );
return texture;
}
Run Code Online (Sandbox Code Playgroud)
我有
#include <SOIL.h>
Run Code Online (Sandbox Code Playgroud) 虽然SOIL包含从图像自动创建纹理的功能,但它使用现代OpenGL中不可用的功能.因此,我们将简单地使用SOIL作为图像加载器并自己创建纹理.
那没关系,但功能是什么?图书馆的其他功能同样受到影响吗?我有一个谷歌,但没有提出任何关于此的信息.我已经看到它在opengl es应用程序中使用,其中IIRC仅具有核心opengl功能.
任何人都可以对所有功能是否可疑或是否只是load_ogl_texture有所了解.
我需要在我的项目中使用SOIL库.我的步骤:
下载并解压缩到我的项目文件夹
将libSOIL.a重命名为SOIL.lib
属性>> C/C++>常规>>附加包含目录 - 添加"./SOIL/src"
属性>>链接器>>常规>>附加库目录 - 添加"SOIL.lib"
把#include"SOIL.h"
找到了函数*SOIL_load_image*但是
错误LNK1104:无法打开文件'SOIL.libkernel32.lib'
尝试使用SOIL为像素艺术游戏加载较小的纹理时遇到一些问题。这是加载40 x 40图像时的结果:

我检查了我的代码,当宽度小于高度时是否存在任何问题,对于40 x 50,一切都还可以。我用Windows的图像查看器检查了30 x 40,看起来也不错。在使用坐标轴设置位置时,可能以任何方式影响装载机的一件事情,但是它工作正常。这是加载纹理的代码:
glGenTextures(1, &actor.texture);
glBindTexture(GL_TEXTURE_2D, actor.texture);
unsigned char* image = SOIL_load_image(("App/Textures/" + name + ".png").c_str(), &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);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
Run Code Online (Sandbox Code Playgroud) 我最近一直在尝试将我的 Visual Studio OpenGL 项目转移到 VS Code,在 Windows 10 上通过 mingw-x64 使用 GCC。由于我对 C++ 编程相当陌生,因此我在这一切方面取得了稳步进展,并且我'遇到了一个我无法解决的错误。
使用以下命令构建时:
C:\Lib\mingw-w64\mingw64\bin\g++.exe -LC:/Lib/lib -IC:/Lib/include -g main.cpp -lglew32 -lglfw3 -lSOIL -lopengl32 -o build.exe
Run Code Online (Sandbox Code Playgroud)
我一直收到这个错误:
C:/Lib/lib/SOIL.lib: error adding symbols: File format not recognized
collect2.exe: error: ld returned 1 exit status
Run Code Online (Sandbox Code Playgroud)
我使用的 SOIL.lib 在 Visual Studio 中运行良好,并且 GCC 似乎对我使用的其他 .lib 文件没有任何抱怨。
似乎没有太多关于正在发生的事情的信息,我发现很多不同的人对不同的事情有相同的错误,而且我无法弄清楚这个神秘的错误消息实际上出了什么问题。有人可以帮忙吗?