我有一个与游戏引擎静态库链接的测试项目。我成功地为 OS X 和 iOS 构建了它,然后,在我的实验中,在我的应用程序代码中添加了库方法的新用法(已经有一些其他用法):
std::vector<Node*> allNodes;
_scene->findNodes("", allNodes, true, false);
之后,iOS 构建开始产生链接器错误(而 OS X 构建仍然可以正常工作):
Undefined symbols for architecture armv7:
"gameplay::Scene::findNodes(char const*, std::vector<gameplay::Node*, std::allocator<gameplay::Node*> >&, bool, bool) const", referenced from:
App::initialize() in App.o
ld: symbol(s) not found for architecture armv7
clang: error: linker command failed with exit code 1 (use -v to see invocation)
Undefined symbols for architecture armv7s:
"gameplay::Scene::findNodes(char const*, std::vector<gameplay::Node*, std::allocator<gameplay::Node*> >&, bool, bool) const", referenced from:
App::initialize() in App.o
ld: symbol(s) not found for architecture armv7s
clang: error: linker command failed with exit code 1 (use -v to see invocation)
同时,其他功能(甚至来自同一类场景)被链接并且工作正常。此方法具有以下签名:
unsigned int findNodes(const char* id, std::vector<Node*>& nodes, bool recursive = true, bool exactMatch = true) const;
在 .cpp 文件中,它的实现具有匹配的签名:
unsigned int Scene::findNodes(const char* id, std::vector<Node*>& nodes, bool recursive, bool exactMatch) const
仍然没有链接。这种特定方法可能有什么问题?
XCode 版本为 5.0.2
编辑 1: 该库是从 armv7/armv7s 架构的源代码构建的,应用程序本身也是如此。