2

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

到目前为止,我只为我的外部(SFML、Glew、OpenGL32)使用了动态 dll 链接。另一方面,SOIL 是一个静态库。我已经看到项目解决方案中构建的静态库,它显然将 em 添加到 .exe 并消除了添加 dll 的需要。我还读到还有另一种方法可以通过在链接器中添加引用来链接静态库(我使用 VC++ 2012 作为我的 DevEnv)。但是,经过数小时的搜索,我未能找到合适的教程来说明如何完成此任务。

我将 SOIL 发行版中的“src”目录重命名为“include”(只是为了保持一致)并将其添加到 Additional Include Directories,将 lib 目录的路径添加到链接器(libSOIL.a 文件存储在其中)并添加 libSOIL。 a 附加依赖项。它给了我带有 SOIL_load_OGL_texture 的 lnk2019 错误。我将 libSOIL.a 重命名为 SOIL.lib,也在链接器中对其进行了调整——同样的错误仍然存​​在。我继续编译提供的 VS 项目并在“VS9”和“VS8”项目文件夹中构建 SOIL.lib。链接任何一个都是失败的。

在我绝望的最后时刻,我使用了 extern "C",认为 SOIL 是一个 C 库。那完全是愚蠢的 :) 我接着读到人们使用 g++ 来链接他们的静态库,我不知道如何使用。

请有人提供一个简单的分步算法,说明如何将像 SOIL 这样的静态库链接到 VS2012 c++ 项目。如果你有时间,关于这个主题的视频绝对很棒!非常感谢您的帮助!

PS 如果我的一项尝试对您来说似乎相当正确,是否会由于我在 (x64) 中编译而弹出 lnk2019 错误?

4

0 回答 0