我正在使用一堆自定义静态库来构建测试应用程序。但是,我不断收到以下链接器错误:"_OBJC_CLASS_$_<MainClassOfMiddleLevelLibrary>", referenced from: objc-class-ref-to-MainClassOfMiddleLevelLibrary in lib<HighLevelLibrary>.a(<HighLevelLibrary>.o)
但是,当我构建(HighLevelLibrary)项目时,它链接并构建得很好。我已经设置了标题搜索路径并将这些库包含在我的框架组中。任何想法我失踪?iPhone静态库链接错误
回答
当您构建一个静态库时,您只是创建* .o文件的存档。没有链接阶段。如果您在静态库中使用了任何已声明但未实现的内容,则将构建库时不会出现任何错误。 当您构建应用程序时,会发生实际链接。所以所有的依赖关系(你的案例中的MiddleLevelLibrary)应该被添加到你的应用程序中(而不是HighLevelLibrary)。
嗯,(MiddleLevelLibrary)是链接到我的应用程序(或无论如何)。我想要构建这个,这样我只需链接到(HighLevelLibrary)以获取它下面的库的所有功能和类。我怀疑这是UIKit和其他“包装器”库的工作原理:它们已经嵌入并已经链接的子库,以便更高级别的库公开更低级别的元素。我要那个。我会怎么做呢?谢谢! – Grimless 2010-11-01 20:14:27
您的意思是“伞架”(http://developer.apple.com/library/mac/documentation/MacOSX/Conceptual/BPFrameworks/Concepts/FrameworkBinding.html#//apple_ref/doc/uid/20002256-BAJICBDD) ? 不确定是否有可能为iphone创建自定义伞形框架。 顺便说一句,静态库!=框架 – Yuras 2010-11-01 22:12:55
是啊。我想只能链接到(HighLevelLibrary)来创建一个工作项目。这甚至可以用静态库吗?有趣的是,我将所有这些东西从Mac框架转移到静态库中。 Mac框架非常容易设置并且工作得很好。然而,将这些东西移植到iPhone的过程一直很糟糕。你会认为这种事情会比较容易,但它确实没有...... – Grimless 2010-11-01 23:44:27
- 1. iPhone SDK链接错误与静态库
- 2. 克++链接的静态库错误
- 3. ftd2xx静态库链接错误
- 4. iPhone静态存档库lib:未定义符号链接错误
- 5. 如何解决链接错误 - 静态库iPhone
- 6. boost.log错误链接静态
- 7. OpenCV静态链接错误
- 8. iPhone静态库链接问题
- 9. 在iPhone SDK 3.0中链接静态库
- 10. 使用静态库链接时链接错误
- 11. 链接器错误,当库静态链接时glew
- 12. UNIX:静态库链接到静态库
- 13. iPhone静态库锵/ LLVM错误:non_lazy_symbol_pointers
- 14. iPhone静态库json框架错误
- 15. 与C++静态库链接错误,引用另一个库
- 16. 链接到使用boost库的静态库导致cmake中的链接错误
- 17. 静态字段链接器错误
- 18. 静态变量链接错误
- 19. 从静态成员链接错误
- 20. 链接另一个静态库和qmake的静态库?奇怪的链接错误
- 21. 静态库链接失败
- 22. 链接到静态库
- 23. 静态库链接两次
- 24. iphone链接错误
- 25. Boost和OpenCV库与Eclipse CDR的静态链接。错误
- 26. 编译在Qt中创建的静态链接库的错误
- 27. 嵌套静态链接库和鬼错误
- 28. 链接多个静态库时出现重复符号错误。
- 29. 错误链接与Ubuntu x64上的静态Boost :: Python库
- 30. 链接到静态库时未定义的参考错误
奇怪。当链接(LowLevelLibrary1)和(LowLevelLibrary2)(MiddleLevelLibrary)都依赖时,但当我添加(MiddleLevelLibrary)它宣称它无法找到(MiddleLevelLibrary)的主类时,正常工作。 – Grimless 2010-11-01 20:22:01