MSYS2/MinGW64 中的 ICU 58 未定义参考

Posted

技术标签:

【中文标题】MSYS2/MinGW64 中的 ICU 58 未定义参考【英文标题】:ICU 58 undefined reference in MSYS2/MinGW64 【发布时间】:2017-01-25 06:12:06 【问题描述】:

使用说明 Compiling-ICU-with-MinGW 我收到以下错误

digitlst.o:digitlst.cpp:(.text+0x11): undefined reference to `_free_locale'
digitlst.o:digitlst.cpp:(.text+0x8fe): undefined reference to `_create_locale'
digitlst.o:digitlst.cpp:(.text+0xa20): undefined reference to `_create_locale'
collect2.exe: error: ld returned 1 exit status

我的构建环境:

带有 gcc 版本 6.3.0 的 MSYS2(Rev1,由 MSYS2 项目构建) 64 位工具链:pacman -S mingw-w64-x86_64-toolchain ICU 58.2 来源ICU4C

我做到了

unzip icu4c-58_2-src.zip
cd icu/source
./runConfigureICU MinGW prefix=$PWD/../dist
make

有人知道如何解决这个问题吗?

编辑:与 58.1 相同,但 57.1 工作正常。

【问题讨论】:

我遇到了同样的问题。这可能是 ICU 58 配置脚本中的一个错误,因为 MinGW-w64 从未提供过_create_locale/_free_locale(尽管它们在标题中定义,但它们在 msvcrt.dll 中不存在,MinGW-w64 链接到)。你试过邮件列表吗? 【参考方案1】:

我正在尝试使用最新版本的 ICU 构建 QT 5.8,但出现了这个问题...

我能够通过使用 x86_64-6.3.0-posix-seh-rt_v5-rev1 链接到 libmsvcr100.a 来构建 icu4c-58_2

默认的 libmsvcrt.a 中似乎缺少这些函数

【讨论】:

以上是关于MSYS2/MinGW64 中的 ICU 58 未定义参考的主要内容,如果未能解决你的问题,请参考以下文章

windows安装msys2 mingw64

使用 MSYS2/MINGW-64 缺少 POSIX 和 std 符号

在 MSYS2/MinGW 中执行脚本

msys2 (mingw) 默认库/包含路径配置

Msys2+mingw-w64 编译VS2013使用的ffmpeg静态库注意事项

MSYS2 MinGW 不包括 mingw-get 包管理器