Visual Studio 2015中的"未解析的外部符号__except_handler4_common"

Mr.*_*ome 17 c++ visual-studio visual-studio-2015

我正在Visual Studio 2015中编译一个传统的Visual Studio 6.0 C++应用程序,我遇到了这个错误,搜索网络并没有产生任何有用的信息.

LNK2019未解析的外部符号__except_handler4_common在函数__except_handler4(MSVCRT.lib)中引用

我知道代码中的某个地方引用的是当前版本的MSVCRT中不再存在(?)的方法.是否有解决方法/编译器标志?

Ros*_*dge 17

错误消息实际上是__except_handler4在MSVCRT.LIB中定义的函数引用未定义的符号__except_handler4_common.因此,不是您的代码正在制作此引用,它是Visual Studio 2015的代码.

符号__except_handler4_common在vcruntime.lib中定义.这个文件应该自动链接.我不知道为什么不是.您是否在项目选项中选择了静态运行时库("多线程(/ MT)"),然后手动添加MSVCRT.LIB(动态C运行库的一部分)?

  • 谢谢,罗斯.非常感激.vcruntime.lib目录包含在我的库路径中(它们是在VC++ 6.0到Visual Studio 2015项目转换期间添加/导入的)但是错误使得它看起来(对我来说)由于某种原因它没有被链接.如果我将vcruntime.lib添加到"附加依赖项",则错误消失,但我不完全理解为什么会出现这种情况. (2认同)
  • 就我而言,我有一个使用静态运行时的工作程序,但后来我添加了一个静态库,该库设置为将运行时用作 DLL。修复它们以使用相同的运行时解决了这个问题。 (2认同)

Den*_*son 5

在您的库项目中,检查属性-> C / C ++->代码生成->运行时库

很有可能将其设置为“多线程调试DLL”(/ MDd)。

Change it to "Multi Threaded Debug" (/MTd) and rebuild.