架构i386的未定义符号:_OBJC_CLASS _ $ _ SKPSMTPMessage",引用自:error

Man*_*ann 233 iphone email-integration compiler-errors objective-c ios

我已导入框架,用于从后台应用程序发送电子邮件,即SKPSMTPMessageFramework.有人可以建议为什么会出现以下错误

Undefined symbols for architecture i386:

"_OBJC_CLASS_$_SKPSMTPMessage", referenced from:
  objc-class-ref in ConfirmController.o

"_kSKPSMTPPartContentTransferEncodingKey", referenced from:
  -[ConfirmController sendEmail] in ConfirmController.o

"_kSKPSMTPPartMessageKey", referenced from:
  -[ConfirmController sendEmail] in ConfirmController.o

"_kSKPSMTPPartContentTypeKey", referenced from:
  -[ConfirmController sendEmail] in ConfirmController.o

ld: symbol(s) not found for architecture i386
collect2: ld returned 1 exit status
Run Code Online (Sandbox Code Playgroud)

采取框架的来源: -

锁定MFMailComposeViewController中的字段

更新:

答:只需将文件夹拖放到项目上,然后单击复制即可.多数民众赞成也选择项目复选框和目标复选框.

All*_*ike 566

如果您的类'.m文件未列在目标"Build Phases"选项卡的"Compile Sources"步骤下,则可能会出现此类错误.通常Xcode会为您执行此操作,但有时会丢失绘图,您需要手动添加.m文件.

去做这个:

TargetSettings - > Build Phases - > Compile Sources - >添加你的.m类 - > Build and Run

  • 有时会出现这些错误,因为某些框架未正确链接.只需检查项目的构建阶段选项卡中的"Link Binary With Libraries"中的所有框架. (49认同)
  • 值得注意的是,您可以选择.m文件并在右侧面板"目标成员资格"部分勾选目标旁边的框.当您向项目添加文件时,系统会询问您是否要"添加到目标:",您可能已拒绝,但您可以随时通过我所说的添加它. (9认同)
  • 我以前有同样的错误,我的解决方案是:**构建设置** - >**链接** - >**其他链接器标志** - >添加`-lLibraryName _ $(PLATFORM_NAME)d`**Debug**,并为**Release**添加`-lLibraryName _ $(PLATFORM_NAME)` (4认同)

小智 37

对我来说,问题结果是缺少框架.一旦我添加了em,它就有效了.


Aks*_*hay 28

检查Valid Architectures和Build Active Architecture only属性.

在此输入图像描述


Tim*_*Tim 17

如果您正在使用cocoapods,请确保您的目标的构建设置在其他链接器标志部分中包含$(继承)

在此输入图像描述


Owe*_*ett 10

您的框架是否为armv(x)编译?它看起来像是为i386编译的,这些代码不能在iOS设备上运行.或者它是为armv(x)编译的,你试图在模拟器上运行它,这是i386代码.确保使用上面显示的构建设置Akshay,为您将要运行它的芯片正确编译框架.


sta*_*bit 7

如果您在Xcode,如果目前的进口项目引进一些其他的项目都在编译器源相同的文件,然后直接删除相同的文件在当前项目中的"构建阶段"的设置,它为我工作.


归档时间:

查看次数:

253060 次

最近记录:

6 年,2 月 前