This question already has an answer here:
I am linking SOIL in my library but when I compile I get these linker errors:
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
I did link libSOIL.lib in the addition dependencies.
The unresolved symbol errors, error LNK2019, are from the symbols in libgcc.lib or another standard library implementation (see here for the Microsoft Options) not being linked to. alloca and sqrtf are both standard library functions.
If you aren't linking to a standard library, then link to one by adding it to your linker library path.
From the warning above warning LNK4098, it is more likely you are linking to a standard library but the linker doesn't know which on to load.
Recommend LINKER arguments to make this problem go away (tell the linker to choose a specific standard library) are /NODEFAULTLIB:"MSVCRT" /NODEFAULTLIB:"LIBCMT.
See the following links for additional information and resources
Fixed the error.
Although I'm using VC2010, I built the VC8 libraries. I then added SOIL.lib instead of libSOIL.lib. Errors went away.
I was having the same issue (using Visual Studio 2013 with vc120 toolset), I solved it downloading the SOIL library from the official site and instead of renaming libSOIL.a
to SOIL.lib
I ran the VC8 solution inside the official zip (that creates you the SOIL.lib
)´then I copied it to my project and the problems went away.
来源:https://stackoverflow.com/questions/9629349/soil-not-linking-correctly