【问题标题】:SOIL set-up in Visual Studio 2010Visual Studio 2010 中的 SOIL 设置
【发布时间】:2012-10-22 10:03:15
【问题描述】:

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

属性>>C/C++>常规>>附加包含目录 添加到 SOIL.h 的路径

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

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

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

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

尝试将 libSOIL.a 重命名为 libSOIL.lib 和 SOIL.lib,但没有成功。然后我构建了 VC8 项目并按照此处的建议使用了该 .lib SOIL not linking correctly 但这也没有用。

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

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() );
}

【问题讨论】:

    标签: c visual-studio opengl soil


    【解决方案1】:

    可能是有点旧的线程,但我还是会分享一些东西。

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

    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 属性中指向)。

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

    【讨论】:

    • 我真的很喜欢这个 API :P。感谢您的帮助。
    • 如果你只是使用它从图像中绘制纹理,你也可以使用OpenCV读取图像并绘制它。在这种情况下,您需要知道确切的图像数据类型。
    【解决方案2】:

    听起来您实际上并未将 SOIL.lib 放入您的 Properties -> Linker -> Input -> Additional Dependencies 列表中。

    FreeGLUT 标头有一些 Win32-specific #pragmas 来拉入正确的 .lib 文件,这就是为什么只设置 Additional Library Directories 就可以了。 SOIL 没有这些,所以你必须明确告诉链接器使用哪个.lib。

    【讨论】:

    • 谢谢 - 完美。我知道它会问另一个问题,但你知道有什么好地方可以学习链接器和整个领域(很难在网上找到一个从基础开始的好地方)
    • 不是特别的。就像大多数事情一样,我会从Wikipedia: Linker (computing) 开始,然后去你的好奇心带你去哪里:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-10-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-26
    相关资源
    最近更新 更多