已经使用了一些c / c ++代码已经有一段时间了,它在项目中运行良好。现在尝试从代码中创建.a,除了一个项目外,一切都很好。
有一个c例程,我们称之为
void init(sometype *)
这在XCODE中被标记为c ++文件,它有一个.h文件
在那里我们有
#if defined(__cplusplus)
extern "C"
{
#endif
void init(sometype *);
#if defined(__cplusplus)
}
#endif
当将所有链接作为一个应用程序
时,从目标C调用时,所有这些链接都会找到当这段代码包含在.a中,然后尝试从我们得到的单独项目链接....
Undefined symbols for architecture armv6:
"__Znam", referenced from:
_init in libMy.a(Objectfile.o)
ld: symbol(s) not found for architecture armv6
clang: error: linker command failed with exit code 1 (use -v to see invocation)
看起来我们正在获得一些C ++ init例程?链接查找时的.o看起来与编译.a时的相同(__Znam就在那里)。
那么lib缺少什么????
将进行更多挖掘,尝试找出幕后没有包含的内容。
----------新信息------------
看起来问题是“new”关键字在这个例程中不起作用,这可能是没有正确链接的例程。
这样的一行......
var->output = new Int32*[10];
工作不正常。 .....