我为这个问题而疯狂!
我遇到的错误之一是下一个:
Undefined symbols for architecture i386:
"_zipOpen", referenced from:
-[ZipArchive CreateZipFile2:] in ZipArchive.o
当我调用该方法时,代码的安全性(在这种情况下,我就使用Objective-C ++):
@implementation ZipArchive
...
-(BOOL) CreateZipFile2:(NSString*) zipFile
{
_zipFile = zipOpen( (const char*)[zipFile UTF8String], 0 );
}
在
.h
文件中zipFile _zipFile;
在其他地方:
typedef voidp zipFile;
哪里
typedef void *voidp;
好的,我知道它可能不起作用。但是以前效果很好。事情随着我为单元测试添加的新目标而改变。
我将非常感谢您的帮助!
最佳答案
好吧,从错误
Undefined symbols for architecture i386:
"_zipOpen", referenced from:
-[ZipArchive CreateZipFile2:] in ZipArchive.o
我们可以知道zipOpen()函数的原型被声明为C函数(
extern "C"
),因为其名称没有被修饰。因此,基本上有2个选项说明为什么会出现此错误:
zipOpen()实现根本没有与您的程序链接(忘记将文件/库添加到您的版本中,#ifdef退出等)。
出于某些原因,zipOpen()实现正在获得C ++,而不是C链接。也许您不小心将其放置在名称空间中,或者.cpp文件不包含带有函数的
extern "C"
声明的标头。我们不能根据提供的信息说出来。