0

我做错了什么?

Undefined symbols for architecture i386:
    "_OBJC_CLASS_$_SKPSMTPMessage", referenced from:
  objc-class-ref in MailSend.o
    "_kSKPSMTPPartContentTransferEncodingKey", referenced from:
  -[MailSend sendEmail] in MailSend.o
    "_kSKPSMTPPartContentTypeKey", referenced from:
  -[MailSend sendEmail] in MailSend.o
    "_kSKPSMTPPartMessageKey", referenced from:
  -[MailSend sendEmail] in MailSend.o
ld: symbol(s) not found for architecture i386
clang: error: linker command failed with exit code 1 (use -v to see invocation)

我使用来自http://skpsmtpmessage.googlecode.com/svn/trunk/SMTPSender/的 SKPSMTPMessage

4

3 回答 3

0

我在 Project Navigator 中单击 MailSend.m 文件,并在 File Inspector 的 Target members 中的目标名称附近设置复选框。

我从下面的链接中找到了这个答案,并几乎一字不差地复制了它。有了这个,我能够继续在我原来的项目中工作。

架构 i386“_OBJC_CLASS_$_Appirater”的未定义符号

于 2012-07-11T14:51:16.533 回答
0

您正在为错误的平台构建。看起来您正在使用适用于 iphone 的库,然后尝试在模拟器中运行。如果您直接在 iOS 设备上运行此代码,它应该可以工作。

您尝试使用的库中的自述文件告诉您如何链接库。http://skpsmtpmessage.googlecode.com/svn/trunk/SMTPSender/README.txt

需要告诉编译器您正在构建什么 - i386/simulator 或 armv7/iOS 设备。如果您正确链接库,它将使用它应该使用的部分。

于 2012-07-10T16:44:22.943 回答
0

SKPSMTP 的一个常见问题是忘记CFNetwork.framework在项目中添加对 的引用。你加了这个吗?

于 2012-07-10T16:48:57.360 回答