我在我的库中链接SOIL,但是当我编译时,我得到了这些链接器错误:
1>LINK : warning LNK4098: defaultlib 'MSVCRT' conflicts with use of other libs; use /NODEFAULTLIB:library 1>libSOIL.lib(stb_image_aug.o) : error LNK2019: unresolved external symbol __alloca referenced in function _stbi_zlib_decode_noheader_buffer 1>libSOIL.lib(image_helper.o) : error LNK2019: unresolved external symbol _sqrtf referenced in function _RGBE_to_RGBdivA2
我确实在附加依赖项中链接了libSOIL.lib。
答案 0 :(得分:7)
修正了错误。
虽然我使用的是VC2010,但我构建了VC8库。然后我添加了SOIL.lib而不是libSOIL.lib。错误消失了。
答案 1 :(得分:5)
未解决的符号错误,错误LNK2019,来自libgcc.lib中的符号或其他未链接到的标准库实现(请参阅here表示Microsoft选项)。 alloca和sqrtf都是标准库函数。
如果您没有链接到标准库,请通过将其添加到链接器库路径来链接到标准库。
从警告上面的警告LNK4098,您更有可能链接到标准库,但链接器不知道要加载哪个。
推荐LINKER参数使这个问题消失(告诉链接器选择一个特定的标准库)/ NODEFAULTLIB:“MSVCRT”/ NODEFAULTLIB:“LIBCMT。
有关其他信息和资源,请参阅以下链接
答案 2 :(得分:4)
我遇到了同样的问题(使用带有vc120工具集的Visual Studio 2013),我解决了从官方网站下载SOIL库而不是将libSOIL.a
重命名为SOIL.lib
我运行了VC8解决方案在官方zip中(创建SOIL.lib
)然后我将其复制到我的项目中,问题就消失了。