2015-10-27 70 views
0

我编译libarchive用下面的命令libarchive提高编译器错误在Xcode

  • 的cmake -G “的Xcode” 〜/ libarchive下载-DIR/
  • 使
  • 使安装

并将libarchive.14.dylibachieve.h加到我的项目中。但是我得到了一个编译器错误。任何想法为什么?

Undefined symbols for architecture i386:
"_archive_read_support_filter_all", referenced from: -[AppDelegate application:didFinishLaunchingWithOptions:] in AppDelegate.o ld: symbol(s) not found for architecture i386 clang: error: linker command failed with exit code 1 (use -v to see invocation)

这个我试过这样的代码example建议:

struct archive *a; 
struct archive_entry *entry; 
int r; 

a = archive_read_new(); 
archive_read_support_filter_all(a); 
archive_read_support_format_all(a); 
r = archive_read_open_filename(a, "archive.tar.gz", 10240); // Note 1 

我担心过旁边的代码行的警告。

enter image description here

低于lipo返回值

lipo -info /Users/extjanos/Desktop/temp2/libarchive/libarchive.a input file /Users/extjanos/Desktop/temp2/libarchive/libarchive.a is not a fat file Non-fat file: /Users/extjanos/Desktop/temp2/libarchive/libarchive.a is architecture: x86_64

+0

这与您以前的问题(未包含头文件)是否相同? – trojanfoe

+0

nop,这里就像你在侧面看到'archive.h'已经被添加了 –

+0

那么这些隐式声明警告表明你没有包含正确的头文件。 – trojanfoe

回答

0

你需要在你的文件的顶部导入头:

#import "archive.h" 

至于你将它添加到库中链接库的列表?在您的目标设置中进入“Build Phases”,并检查它是否已添加到“Link Binary With Libraries”列表中。

此外,你必须使用静态库,而不是共享的。使用libarchive.a而不是libarchive.dylib

+0

谢谢好主意,添加了导入行,并且我可以在“Link Binary With Libraries”中看到libarchive.dylib –

+0

请参阅我编辑的有关'libarchive.a'的答案 – deadbeef

+0

尝试了“libarchive.a”,但现在遇到同样的错误。 a“ –