Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ SOIL2文件上未解析的外部符号-需要opengl调用_C++_Opengl_Game Engine_Unresolved External_Soil - Fatal编程技术网

C++ SOIL2文件上未解析的外部符号-需要opengl调用

C++ SOIL2文件上未解析的外部符号-需要opengl调用,c++,opengl,game-engine,unresolved-external,soil,C++,Opengl,Game Engine,Unresolved External,Soil,似乎当我尝试构建我的项目时,由于SOIL2中一些未解析的外部符号,构建失败了。它不知道像这样的调用:\uu imp\u glTexParameteri是什么。我在我的项目中有glfw库,但它似乎仍然认为我没有任何引用。我的项目中有gl调用,但它似乎没有扩展到SOIL2库。我能做些什么吗 是否需要更多信息 我已经确认,在x64空间中运行的LIB是x64,而x32 LIB是在x32空间中运行的 1>SOIL2.obj : error LNK2019: unresolved external s

似乎当我尝试构建我的项目时,由于SOIL2中一些未解析的外部符号,构建失败了。它不知道像这样的调用:\uu imp\u glTexParameteri是什么。我在我的项目中有glfw库,但它似乎仍然认为我没有任何引用。我的项目中有gl调用,但它似乎没有扩展到SOIL2库。我能做些什么吗

是否需要更多信息

我已经确认,在x64空间中运行的LIB是x64,而x32 LIB是在x32空间中运行的

1>SOIL2.obj : error LNK2019: unresolved external symbol __imp_wglGetProcAddress referenced in function SOIL_GL_GetProcAddress
1>SOIL2.obj : error LNK2019: unresolved external symbol __imp_glBindTexture referenced in function SOIL_direct_load_DDS_from_memory
1>SOIL2.obj : error LNK2019: unresolved external symbol __imp_glDeleteTextures referenced in function SOIL_direct_load_DDS_from_memory
1>SOIL2.obj : error LNK2019: unresolved external symbol __imp_glGenTextures referenced in function SOIL_direct_load_DDS_from_memory
1>SOIL2.obj : error LNK2019: unresolved external symbol __imp_glGetError referenced in function SOIL_direct_load_ETC1_from_memory
1>SOIL2.obj : error LNK2019: unresolved external symbol __imp_glGetIntegerv referenced in function SOIL_GL_ExtensionSupported
1>SOIL2.obj : error LNK2019: unresolved external symbol __imp_glGetString referenced in function SOIL_GL_ExtensionSupported
1>SOIL2.obj : error LNK2019: unresolved external symbol __imp_glPixelStorei referenced in function SOIL_direct_load_ETC1_from_memory
1>SOIL2.obj : error LNK2019: unresolved external symbol __imp_glReadPixels referenced in function SOIL_save_screenshot
1>SOIL2.obj : error LNK2019: unresolved external symbol __imp_glTexImage2D referenced in function SOIL_direct_load_DDS_from_memory
1>SOIL2.obj : error LNK2019: unresolved external symbol __imp_glTexParameteri referenced in function SOIL_direct_load_DDS_from_memory
这是我得到的未解决的外部符号。

深呼吸为这篇文章的篇幅提前道歉

从LNK2019错误的文档中:

有许多方法可以获得此错误,但所有这些方法都涉及到对链接器无法解析的函数或变量的引用,或者无法找到其定义。编译器可以识别符号何时未声明,何时未定义,因为定义可能位于不同的源文件或库中。如果引用了符号但从未定义,链接器将生成未解析的外部符号错误

@xaxxon所说的是正确的。链接器生成警告的函数都是OpenGL函数

因此,这些错误告诉您的是SOIL2.obj依赖于OpenGL库

您可以链接两种常见的库,静态库和动态库

维基百科和技术百科提供:

静态库

在计算机科学中,静态库或静态链接库是一组例程、外部函数和变量,它们在编译时在调用程序中解析,并由编译器、链接器或绑定器复制到目标应用程序中,生成目标文件和独立可执行文件

动态库还是共享库

动态库是一种编程概念,其中具有特殊功能的共享库仅在程序执行期间启动,这将最小化总体程序大小,并有助于提高应用程序性能以减少内存消耗。在大多数软件程序中,将特定功能分配到不同的模块中可以根据需要进行加载

动态库决不是可执行文件或应用程序的一部分。在运行时,在动态库和可执行文件或应用程序之间建立链接

链接不是一个容易理解的概念,如果你刚刚开始,你可能想访问Lazy Foo的网站,该网站可以引导你了解与freeglut库进行链接的基础知识

但最基本的是;为了使用其他人的库,您应该首先了解该库是如何创建的。该人员创建的是静态库还是动态库。然后,您可以计算出应该如何链接该库

例如,当针对共享库进行链接时,您需要将.dll文件包含在可执行文件中,这是因为当程序运行时,剩余的链接位正好在程序运行时完成。 见:

我知道这个答案太长了,你可能只需要一个简单的方法:将这个文件拖放到x目录中。不幸的是,如果你坐下来,确切地了解编译器和链接器实际上在做什么,以及它们试图与你交流的内容,这确实是值得的

我不能给你们一步一步的说明,因为这取决于你们有什么样的库

然而

如果您碰巧在VisualStudio中有一个项目,您可以使用Nuget Package Manager进行欺骗,并安装nupengl,后者将为您安装OpenGL和GLEW


记住这不是魔法!它只是针对库的链接,你应该真正学会如何在没有Nuget的情况下做到这一点。祝你好运

你必须链接opengl-我是新来的。我在附近见过这样的说法。我该怎么办?就像你在谈论向链接器添加一些东西一样?comment updatedI am not understanding=PIt应该指出,OpenGL与其说是一个库,还不如说是一个特定的OpenGL,而是一个API规范,如果OpenGL是一个API层,它是操作系统发行版的一部分。图形驱动程序附带了实际的OpenGL实现。谢谢@datenwolf更正。谢谢您的帖子!我更喜欢这个解释,而不是简短的解释。我学得越多,我的生活就会越好!我现在在工作,但当我回到家,看看所有这些链接,如果我让它工作,我会标记为答案。谢谢