【问题标题】:SOIL not linking correctly [duplicate]土壤未正确链接[重复]
【发布时间】:2012-03-26 15:01:28
【问题描述】:

我在我的库中链接 SOIL,但是当我编译时出现以下链接器错误:

1>LINK : 警告 LNK4098: defaultlib 'MSVCRT' 与其他库的使用冲突;使用 /NODEFAULTLIB:library 1>libSOIL.lib(stb_image_aug.o) : 错误 LNK2019: 函数 _stbi_zlib_decode_noheader_buffer 中引用的未解析的外部符号 __alloca 1>libSOIL.lib(image_helper.o) : 错误 LNK2019: 函数 _RGBE_to_RGBdivA2 中引用的未解析外部符号 _sqrtf

我确实在附加依赖项中链接了 libSOIL.lib。

【问题讨论】:

    标签: c++ opengl glfw soil


    【解决方案1】:

    修正了错误。

    虽然我使用的是 VC2010,但我构建了 VC8 库。然后我添加了 SOIL.lib 而不是 libSOIL.lib。错误消失了。

    【讨论】:

    • 我使用的是 VC2012(称为 VC11)并且构建 VC9 解决方案也有效。
    • 我正在使用 VC2013 并且构建 VC8 解决方案有效
    【解决方案2】:

    未解决的符号错误(错误 LNK2019)来自未链接到的 libgcc.lib 或其他标准库实现(请参阅 here 以获取 Microsoft 选项)中的符号。 alloca 和 sqrtf 都是标准库函数。

    如果您没有链接到标准库,请通过将其添加到链接器库路径来链接到标准库。

    根据上述警告 LNK4098 的警告,您更有可能链接到标准库,但链接器不知道要加载哪个。

    推荐 LINKER 参数来解决这个问题(告诉链接器选择一个特定的标准库)是 /NODEFAULTLIB:"MSVCRT" /NODEFAULTLIB:"LIBCMT。

    有关更多信息和资源,请参阅以下链接

    【讨论】:

    • 嗯,添加 /NODEFAULTLIB:MSVCRT 修复了警告,但仍然存在相同的错误。
    【解决方案3】:

    我遇到了同样的问题(使用带有 vc120 工具集的 Visual Studio 2013),我解决了它从官方网站下载 SOIL 库,而不是将 libSOIL.a 重命名为 SOIL.lib 我在官方 zip 中运行 VC8 解决方案(这会为您创建SOIL.lib)'然后我将其复制到我的项目中,问题就消失了。

    【讨论】:

    • 这对我也有用。 VS 2013 用 VC8 代替 VC9
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-08-16
    • 2014-10-24
    相关资源
    最近更新 更多