Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/140.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++ 链接C+中的静态库+;项目(带土壤的OpenGL)_C++_C_Opengl_Visual Studio 2012 - Fatal编程技术网

C++ 链接C+中的静态库+;项目(带土壤的OpenGL)

C++ 链接C+中的静态库+;项目(带土壤的OpenGL),c++,c,opengl,visual-studio-2012,C++,C,Opengl,Visual Studio 2012,我使用OpenGL使用.obj网格加载程序构建了一个简单的图形引擎。现在我想向网格添加一些纹理。我打算使用.dds文件来存储它们。由于其简单性,我选择了土壤库进行加载 到目前为止,我只在外部使用动态dll链接(SFML、Glew、OpenGL32)。另一方面,土壤是一个静态库。我见过在项目解决方案中构建的静态libs,它显然将em添加到了.exe中,并且消除了添加DLL的需要。我还了解到,还有另一种方法可以通过在链接器中添加引用来链接静态库(我使用VC++2012作为我的开发工具)。然而,经过几

我使用OpenGL使用.obj网格加载程序构建了一个简单的图形引擎。现在我想向网格添加一些纹理。我打算使用.dds文件来存储它们。由于其简单性,我选择了土壤库进行加载

到目前为止,我只在外部使用动态dll链接(SFML、Glew、OpenGL32)。另一方面,土壤是一个静态库。我见过在项目解决方案中构建的静态libs,它显然将em添加到了.exe中,并且消除了添加DLL的需要。我还了解到,还有另一种方法可以通过在链接器中添加引用来链接静态库(我使用VC++2012作为我的开发工具)。然而,经过几个小时的搜索,我没有找到一个合适的教程,如何完成这一点

我将SOIL distribution中的“src”目录重命名为“include”(只是为了保持一致),并将其添加到其他include目录中,将lib目录的路径添加到链接器中(存储libSOIL.a文件的地方),并将libSOIL.a添加到其他依赖项中。它给了我lnk2019错误,带有土壤负荷和OGL纹理。我将libSOIL.a重命名为SOIL.lib,并在链接器中对其进行了调整-同样的错误仍然存在。我继续编译提供的VS项目,并在“VS9”和“VS8”项目文件夹中构建SOIL.lib。链接两者都是失败的

在我绝望的最后时刻,我使用了外部“C”,认为土壤是一个C库。这完全是愚蠢的:)我接着读到人们使用g++链接他们的静态lib,我不知道如何使用

请某人提供一个简单的分步算法,如何将静态类LIB的土壤链接到VS2012 C++项目。如果你有时间,一个关于这个主题的视频会非常棒! 谢谢你的帮助


另外,如果我的一次尝试在您看来是合理正确的,是否会因为我在(x64)中编译而弹出lnk2019错误

扩展名
.a
表示库是使用*UX命令
AR
创建的。这强烈表明您正在尝试链接到Linux库,而不是Microsoft Windows/Visual Studio。在Windows中,无论库是静态链接还是动态链接(导入/导出),它都将始终使用
.lib
文件扩展名。当您从动态更改为静态时,通常会链接具有不同文件名的库,但扩展名不会更改(无论如何,在Microsoft Windows上)。@AndonM.Coleman: