gpt4 book ai didi

ios - i386 架构的 undefined symbol (是的,再一次......)

转载 作者:行者123 更新时间:2023-11-29 04:40:37 24 4
gpt4 key购买 nike

我对这个问题感到抓狂!

我遇到的错误之一是下一个:

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() 函数的原型(prototype)被声明为 C 函数 (extern "C"),因为它的名称没有被破坏。

因此,出现此错误的原因基本上有两种选择:

  • zipOpen() 实现根本没有与您的程序链接(忘记将文件/库添加到您的构建中、#ifdef'd out 等)
  • 出于某种原因,zipOpen() 实现使用的是 C++,而不是 C 链接。也许您不小心将其放置在命名空间内,或者 .cpp 文件不包含带有函数的 extern "C" 声明的 header 。

根据所提供的信息,我们无法确定它是哪一个。

关于ios - i386 架构的 undefined symbol (是的,再一次......),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10450770/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com