ICU ustdio.h functions: Undefined symbols on Mac OS when building with CMake
我正在制作一个基于文本的游戏,使用ICU在3个主要PC平台上处理UTF-8编码的JSON文件中的游戏文本。在引用ICU类型(例如UChar,UnicodeString等)时,我能够使用CMake编译并链接游戏二进制文件,并且一切正常。奇怪的是,在不引起"未定义符号"链接器错误的情况下,某些标题无法访问任何类型或函数。特别是,我需要从其中访问u_fopen(),u_fclose(),u_fgets()等的头文件" ustdio.h",以从我的JSON文件中提取unicode字符串。
Undefined symbols for architecture x86_64:
"_u_fclose_57", referenced from:
FileReader::Close() in libsource.a(FileReader.cpp.o)
"_u_fgets_57", referenced from:
FileReader::HasNextLine() in libsource.a(FileReader.cpp.o)
FileReader::NextLine() in libsource.a(FileReader.cpp.o)
"_u_fopen_57", referenced from:
FileReader::FileReader(std::__1::basic_string, std::__1::allocator >) in libsource.a(FileReader.cpp.o)
我正在使用此CMake模块文件来定位
我通过搜索每个与ICU相关的dylib文件的符号表来弄清楚,直到找到丢失的符号(在
1 | set(${ICU_PUBLIC_VAR_NS}_FIND_COMPONENTS io) |
此外,您还可以通过输出变量