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 未定义参考的主要内容,如果未能解决你的问题,请参考以下文章
使用 MSYS2/MINGW-64 缺少 POSIX 和 std 符号