还是自己解决了  xcode里的混编模式确实对于新手来说有点搞不懂。不过其实有C或者C++基础,还算是好理解我总结下我的心得,希望对其他人有帮助:1、首先,混编模式是按文件类型选用不同的编译器的。比如默认.m文件是使用 obj-c编译器。.mm是obj-c++编译器。.cpp是纯C++编译器。
2、obj-c++是作为连接obj-c与C++的桥梁,如果没有这个,也许我猜测就需要要求C++模块导出纯C形式的API接口给 obj-c调用了。
3、如果你引用了某些 C++的静态库或者动态库,特别是静态库,如果找不到某些 stl库的符号(很明显他们都是标准C++的支持库)那么你需要修改工程配置,在 C++ standard library 哪里选择 libstdc++的那个选项。虽然不是很明白,估计是这个库里含有 stl部分吧,纯属猜测。
4、如果你的代码调用了一个从静态库导出的接口,而这个静态库里面有用到 C++的库或者代码,即便是你使用的接口它是标准obj-c的形式的,你也需要将你调用接口的那个文件后缀改成 mm 。不然会找不到符号。
5、如果你引用了某个静态库或者动态库,而上面这些操作都无效,还是找不到符号,还有可能就是确实不存在符号,因为静态库或者动态库在编译的时候会列举出支持的平台,比如armv7 或者 arm64. 如果你新的工程配置的这个平台比库支持的平台多,那么就会提示多出来的这个平台编译找不到符号。比如库不支持arm64,而你的代码又设置了 arm64编译,那么就会报错 编译 arm_86_64时候找不到符号。这种情况通常出现在编译release的时候。
暂时就这些,如果有新的新的,会随时更新。暂时不结贴。