我有两个工作编译器,clang
在一个Mac
可以定位的编译器iPhone
和clang
一个iPhone
也可以定位的编译器上iPhone
。通常两者都工作得很好,生成二进制文件和库。上制作的库Mac
可以链接上iPhone
。但现在我面临一个奇怪的问题:尝试在 iPhone 上链接到在 Mac 上创建的库时,库没有链接。
Undefined symbols:
"__Z7JS_Initji", referenced from:
_main in test-CgDtHX.o
这是对 JS_Init 的调用,它被定义为以不同方式扩展的宏。
iphone-clang
将其扩展为:
extern JSRuntime * JS_Init(uint32_t maxbytes, int);
mac-clang
将扩展为:
extern JSRuntime * JS_Init(uint32_t maxbytes, JSUseHelperThreads useHelperThreads);
我不确定宏扩展是否是链接失败的原因。
ji
好的,现在我的问题是,到底是什么Z7
意思 __Z7JS_Initji
?我在哪里可以找到显示 和 之间对应关系的argument types
表格mangling ids
?这必须是ld
文档,但我找不到它。主要是因为我不知道这方面的好查询词。