0

我正在尝试将此 iOS 库PTImageAlbumViewController添加到我正在处理的现有项目中,但出现编译错误。包含一个示例项目,它依赖于其他几个库。示例项目工作得很好,但我无法将它迁移到我自己的项目中而不会出现错误。我尝试通过将文件从项目拖到项目直接从项目中提取文件,但它仍然无法正常工作

有什么我想念的吗?

对于建筑的ARMv7未定义的符号: “_OBJC_METACLASS _ $ _ NetworkPhotoAlbumViewController”,从引用:_OBJC_METACLASS _ $ _ PTImageAlbumViewController在PTImageAlbumViewController.o “_OBJC_CLASS _ $ _ NIPhotoAlbumScrollView”,从引用:_OBJC_CLASS _ $ _ PTImageAlbumView在PTImageAlbumView.o “_OBJC_CLASS _ $ _ NetworkPhotoAlbumViewController”,从引用:_OBJC_CLASS _ $ _ PTImageAlbumViewController在 PTImageAlbumViewController.o "_NIPathForBundleResource" 中,引用自:-[PTImageAlbumViewController viewDidLoad] in PTImageAlbumViewController.o "_OBJC_METACLASS_$_NIPhotoAlbumScrollView",引用自:_OBJC_METACLASS_$_PTImageAlbumView in PTImageAlbumView.o ld:未找到架构 armv7 的符号 clang:错误:链接器命令失败,退出代码为 1(使用 -v 查看调用)

4

2 回答 2

1

它找不到的是 nimbus 文件。

如果您已将 nimbus 和 SDURLCache 文件添加到项目中,那么只需确保它们包含在应用程序的目标中即可。

确保所有文件都进入您的项目并且位于正确的目标中。例如,第一个错误与 NetworkPhotoAlbumViewController.m 有关。该文件是否在您的项目和正确的目标中?

如果是这样,另一种可能性是,出于某种原因,它根本不是为这种架构构建的。您可以通过将树从 DerivedData 目录导航到目标文件的存储位置并使用 nm 在目标文件中搜索丢失的符号来查找。

我的机器上的示例:

cd /Users/username/Library/Developer/Xcode/DerivedData/AlbumDemo-eyqszubjyqhczreurkblqktoxjja/Build/Intermediates/AlbumDemo.build/Debug-iphonesimulator/AlbumDemo.build/Objects-normal/i386

nm NetworkPhotoAlbumViewController.o | grep _NetworkPhotoAlbumViewController
00000000 t -[NetworkPhotoAlbumViewController shutdown_NetworkPhotoAlbumViewController]
0000e0fc s -[NetworkPhotoAlbumViewController shutdown_NetworkPhotoAlbumViewController].eh
0000cde8 S _OBJC_CLASS_$_NetworkPhotoAlbumViewController
0000c9b4 S _OBJC_IVAR_$_NetworkPhotoAlbumViewController._activeRequests
0000c9bc S _OBJC_IVAR_$_NetworkPhotoAlbumViewController._highQualityImageCache
0000c9b0 S _OBJC_IVAR_$_NetworkPhotoAlbumViewController._queue
0000c9b8 S _OBJC_IVAR_$_NetworkPhotoAlbumViewController._thumbnailImageCache
0000cdfc S _OBJC_METACLASS_$_NetworkPhotoAlbumViewController
0000cfe0 s l_OBJC_$_INSTANCE_METHODS_NetworkPhotoAlbumViewController
0000d084 s l_OBJC_$_INSTANCE_VARIABLES_NetworkPhotoAlbumViewController
0000d0e0 s l_OBJC_$_PROP_LIST_NetworkPhotoAlbumViewController
0000d100 s l_OBJC_CLASS_RO_$_NetworkPhotoAlbumViewController
0000cfb8 s l_OBJC_METACLASS_RO_$_NetworkPhotoAlbumViewController

这些符号在第二列中没有“U”这一事实意味着它们是在此目标文件中定义的。您可以从nm 手册页中找到所有 nm 输出的含义。

于 2012-05-17T21:24:57.970 回答
0

有时当你创建一个新的 Class 文件时,Xcode 不会将它添加到“Compiled Sources”中

选择项目图标 > 目标 > 构建阶段 > 编译源

然后单击 + 按钮添加 Class *.m 文件。

于 2013-07-19T16:06:40.257 回答