在Visual Studio 2010中设置SOIL

7
我无法在Visual Studio 2010中正确使用SOIL - 我对VS并不是很精通,但据我所知,只需要执行以下步骤即可使环境正常运行:
属性 >> C/C++ >> 常规 >> 附加包含目录 添加 SOIL.h 的路径
属性 >> 链接器 >> 常规 >> 附加库目录 添加 libSOIL.a 的路径
我还使用了免费的GLUT,glut文件的路径也在此设置 - 我还将调试 >> 环境路径设置为GLUT bin文件。
当我使用SOIL_load_OGL_texture时,出现以下错误:
error LNK2019: 未解析的外部符号 _SOIL_load_OGL_texture,该符号在函数“void __cdecl init(void)”(?init@@YAXXZ)中被引用。
尝试将libSOIL.a重命名为libSOIL.lib和SOIL.lib,但未成功。然后按照SOIL not linking correctly建议构建了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() );
}
2个回答

9

虽然这可能是一个有点陈旧的线程,但我还是想分享一些东西。

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

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

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

现在按F5 /运行来构建和运行。在执行此操作时要小心,以防您的项目正在使用x64 Debug版本,则在此处在构建解决方案之前选择相同的选项。

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

此时,您已经完成了。它应该可以工作。


1
我真的很喜欢这个API :P。谢谢你的帮助。 - Ferenc Dajka
如果您只是用它来从图像中绘制纹理,您也可以使用OpenCV读取图像并进行绘制。在这种情况下,您需要知道确切的图像数据类型。 - SanD

5
似乎您并没有将SOIL.lib放在您的属性 -> 链接器 -> 输入 -> 附加依赖项列表中。
FreeGLUT头文件有一些Win32-specific #pragmas,可以引入适当的.lib文件,这就是为什么仅设置Additional Library Directories对其起作用的原因。SOIL没有这些,因此您必须明确告诉链接器使用哪个.lib

谢谢 - 完美运作。我知道这是另一个问题,但你是否知道任何好的学习链接器和整个领域的地方(很难在网络上找到从基础开始的好地方)? - A Murray
没有特别的建议。就像大多数事情一样,我会从Wikipedia: 链接器(计算机)开始,然后跟随你的好奇心去探索 :) - genpfault

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接