This question already has answers here:
What is an undefined reference/unresolved external symbol error and how do I fix it?

(36个答案)


已关闭6年。




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

最佳答案

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

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

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

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

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

  • Linker Tools Warning LNK4098
  • Linking problems SOLVED
  • Default Libraries in Visual C++
  • Resolving LNK4098: defaultlib 'MSVCRT' conflicts with Stack Overflow Question
  • 关于c++ - 土壤连接不正确,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9629349/

    10-10 15:02