【问题标题】:Unresolved Symbol: __except_handler4_common未解析的符号:__except_handler4_common
【发布时间】:2021-05-08 12:18:45
【问题描述】:

使用 MSVC2019 链接我的 win32 应用程序时,我收到错误消息

Error   LNK2019 unresolved external symbol __except_handler4_common 

SO #31867018 很久以前就解决了这个问题,但答案是确保在 Props->C/C++->CodeGeneration->RuntimeLibrary 中指定了 /MTd。我的应用确实指定了 /MTd,所以我无法理解这个问题。

我可以通过在我的应用中包含此函数的空版本来消除此错误,例如,

void _except_handler4_common(void){}

但我不喜欢这种粗俗的黑客行为:(

【问题讨论】:

  • 该符号只能出现在使用 /MD 编译的代码中。中断异常处理不是一个好主意。通常它是您链接的库中的代码,请考虑对所有代码采用 /MD。链接器的 /verbose 选项会很有帮助。
  • 汉斯,不能对所有代码使用 /MD - 它会破坏其他内容,但感谢您的评论
  • 汉斯,放大:我的项目使用了一些我没有源代码的第三方库。

标签: visual-studio exception


【解决方案1】:

我可以通过在我的应用程序中包含此函数的空版本来消除此错误,例如,

void _except_handler4_common(void){}

诚然,这是一个严重的黑客行为。 “正确”的解决方案是使用一致的 /MD /MT 设置重新编译所有组件。
但在我的情况下,使用了我没有源代码的第三方库。 正如 Hans Passant 指出的那样,这不是,总的来说是个好主意。

【讨论】:

    【解决方案2】:

    就我而言,我只是想念vcruntime.lib。要解决这个问题,请转到“配置属性”>“链接器”>“输入”并将库名称添加到“附加依赖项”

    【讨论】:

      猜你喜欢
      • 2015-10-30
      • 2010-12-15
      • 1970-01-01
      • 2011-02-09
      • 2015-02-17
      相关资源
      最近更新 更多