libiconv未链接到iOS项目

26

我正在尝试将MailCore编译到我正在制作的iOS应用程序中,但链接器一直抱怨libiconv没有链接。至少我认为它是在抱怨这个。下面是它输出的内容:

Undefined symbols for architecture i386:
  "_iconv", referenced from:
      _mail_iconv in libmailcore.a(charconv.o)
  "_iconv_open", referenced from:
      _charconv in libmailcore.a(charconv.o)
      _charconv_buffer in libmailcore.a(charconv.o)
  "_iconv_close", referenced from:
      _charconv in libmailcore.a(charconv.o)
      _charconv_buffer in libmailcore.a(charconv.o)
ld: symbol(s) not found for architecture i386
collect2: ld returned 1 exit status

这是为模拟器构建的。构建我的iPhone也出现了相同的错误,但是将 s/i386/armv7/ 替换一下就可以。

我尝试将 libiconv.dylib 添加到 "Link Binary with Libraries" 中,但是并没有改变错误。

有什么想法吗?我一直在尝试谷歌这个错误,但找不到任何关于如何连接 libiconv 的信息。由于它是iOS SDK的一部分,你会认为我不需要自己编译它?


2
libiconv.dylib 完成了它。 - naz
3个回答

68

您需要通过“添加框架”方式添加libiconv.dylib。源代码可以从这个讨论中获取。


17

为了确认这个库已经包含在你的目标文件中,需要在Xcode左侧的文件列表中选择该库(假设你已将其添加到Target/Project中,你应该在Framework下看到该框架),然后在右侧面板上显示“Assistant Editor”视图(View -> Assistant Editor -> Show Assistant Editor)。

然后,在左侧选择相关库时,将会在右侧显示该库的“Target Membership”,显示为一个复选框列表。

你应该能看到App Target被列出,且该目标的复选框被选中。

你可以尝试取消选中并重新选中它,来推动它进入你的项目中?


谢谢,解决了!不过它在文件检查器中(在Xcode 4中是Option-Cmd-1,或者View > Utilities > Show File Inspector)。 - sarahhodne
很高兴听到这个消息。感谢您让我们知道,并接受了答案。 - Snips
我已经尝试了libjumio库的相同操作,但没有用。您能否帮助我解决这个问题? - Ganesh

1
  • 简单:
    • 使用Xcode添加引用的框架:libiconv
      • Xcode->选择正确的项目Targets->Build Phases->Link Binary With Libraries->点击+->搜索libiconv->选择找到的libiconv.tbd
      • enter image description here
      • enter image description here
  • 详细信息:我的另一篇回答

做了那个。但是问题还是一样。目标正确。:-( 我需要静态库。 - Wizard of Kneup
找到了。不知何故,我需要同时使用libiconv和iconv。 - Wizard of Kneup

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接