【问题标题】:How to fix linker error unresolved external std::locale::id::id in C++ Builder如何在 C++ Builder 中修复链接器错误未解决的外部 std::locale::id::id
【发布时间】:2021-08-05 12:17:04
【问题描述】:

编译 C++ Builder 10.4 项目时,我收到以下链接器错误:

[ilink32 错误] 错误:未解析的外部 'std::locale::id::id(unsigned int)' 引用自 C:\USERS\PUBLIC\DOCUMENTS\EMBARCADERO\STUDIO\21.0\DCP\SCREEN2VIDEO.LIB| Screen2Video

当“与动态 RTL 链接”和“与运行时包链接”关闭时,会发生此链接器错误。用动态RTL链接时,不会出现链接器错误,但我想静态链接。

SCREEN2VIDEO.LIB 来自包含导入的 ActiveX 控件的包。

【问题讨论】:

  • 你需要什么?动态或静态链接运行时环境?这取决于如何构建和链接 ActiveX 或 DLL?!
  • 要静态链接项目,请确保您也禁用运行时包。禁用动态 RTL 是不够的

标签: c++ c++builder c++builder-10.4-sydney


【解决方案1】:

在关闭动态 RTL 的情况下重新编译所有依赖包(包括 screen2video.bpl)。这修复了链接器错误。

【讨论】:

    【解决方案2】:

    这里有同样的问题,但使用 C++ Builder 11。原来是优化器的问题。尝试禁用所有优化。 另请查看 Embarcadero 的相关错误报告之一: https://quality.embarcadero.com/browse/RSP-29221

    编辑:我进行了更多实验,发现了有问题的编译器标志。 -finline-functions 是在使用 -O2 或更高版本时隐式添加的。 因此,作为一种解决方法,您可以将 -fno-inline-functions 添加到 C++ 编译器 > 高级 > 附加选项,以使其工作,至少不会对性能产生太大影响。

    我也将此信息添加到上述错误报告中。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-11-14
      • 2020-04-30
      • 2012-03-05
      • 1970-01-01
      • 1970-01-01
      • 2011-12-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多