7

我无法让 SOIL在 Visual Studio 2010 中正常工作——我远非 VS 专家,但据我所知,让环境正常工作只需要以下步骤:

属性>>C/C++>General>>Additional include目录 添加到SOIL.h的路径

属性>>链接器>>常规>>附加库目录添加到libSOIL.a的路径

我也在使用免费的 GLUT,并且 glut 文件的路径也在此处设置——我还将 Dubugging>>Environment Path 设置为 GLUT bin 文件。

当我使用 SOIL_load_OGL_texture 时,出现以下错误:

错误 LNK2019:函数“void __cdecl init(void)”(?init@@YAXXZ) 中引用的未解析外部符号 _SOIL_load_OGL_texture

尝试将 libSOIL.a 重命名为 libSOIL.lib 和 SOIL.lib,但没有成功。然后,我构建了 VC8 项目并按照此处的建议使用了该 .lib 土壤未正确链接,但这也不起作用。

我正在使用他们主页上的示例代码

GLuint tex_2d;
tex_2d = SOIL_load_OGL_texture
    (
        " C:\\Sunset.png",
        SOIL_LOAD_AUTO,
        SOIL_CREATE_NEW_ID,
        SOIL_FLAG_MIPMAPS | SOIL_FLAG_INVERT_Y | SOIL_FLAG_NTSC_SAFE_RGB | SOIL_FLAG_COMPRESS_TO_DXT
    );

/* check for an error during the load process */
if( 0 == tex_2d )
{
    printf( "SOIL loading error: '%s'\n", SOIL_last_result() );
}
4

2 回答 2

8

可能是旧线程,我仍然会分享一些东西。

  1. 从http://www.lonesock.net/soil.html下载 zip并解压缩。

  2. 在您的 Visual Studio 项目包含路径(项目 -> 属性 -> vc++ 目录 -> 包含目录)中,将路径添加到 Soil 的“src”文件夹。-> 库目录的相同位置添加“lib”文件夹。项目 -> 属性 -> 链接器 -> 输入 -> 附加依赖项 -> 编辑以添加“SOIL.lib”

  3. 这一步很重要,因为人们倾向于将该 .a 文件重命名为 .lib。不要那样做。而是进入“项目”文件夹,选择一个 VC*(例如 VS2012 的 VC8)-> 打开 Visual Studio 文件-> 它将使用您的 Visual Studio 打开-> 单击确定-> 单击确定。您的解决方案将准备就绪。

现在按 F5/Run 构建并运行。执行此操作时要小心,以防您的项目使用 x64 调试版本,然后在此处选择相同的版本,然后再构建解决方案。

  1. 将在 VC* 文件夹中创建文件夹/文件。进入 Debug/x64(取决于您的项目),将 SOIL.lib 文件复制到原始“lib”文件夹(您在步骤 2 中的 Visual Studio 属性中指向)。

至此,您就完成了。它应该工作。

于 2015-04-19T23:07:55.580 回答
5

听起来你实际上并没有SOIL.lib列入你的Properties -> Linker -> Input -> Additional Dependencies名单。

FreeGLUT 标头有一些特定于 Win32 的#pragmas来提取正确的.lib文件,这就是为什么只设置Additional Library Directories工作的原因。SOIL 没有这些,因此您必须专门告诉链接器.lib使用哪个。

于 2012-10-22T14:07:59.693 回答