7

我在我的库中链接 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。

4

3 回答 3

7

修复了错误。

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

于 2012-03-10T06:02:29.137 回答
6

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

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

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

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

有关其他信息和资源,请参阅以下链接

于 2012-03-09T10:28:47.697 回答
4

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

于 2014-04-25T03:04:17.480 回答