我创建了 C 函数:
标题
//FileSystem.h file
#import <Foundation/Foundation.h>
BOOL AddSkipBackupAttributeToItemAtURL(NSURL *url);
执行
//FileSystem.mm
#import "FileSystem.h"
#import <sys/xattr.h>
#import <Support/Support.h>
static const char* attrName = "com.apple.MobileBackup";
BOOL AddSkipBackupAttributeToItemAtURL(NSURL *url) {
BOOL operationResult = NO;
// some implementation
return operationResult;
}
当我AddSkipBackupAttributeToItemAtURL
从应用程序的另一部分调用时,一切都很好,除了我从块中调用函数的地方。
__block UpdateFileAsyncOperation* selfOperation = self;
_contentDownloader.completionBlock = ^(NSData* data) {
[data saveForcedToPath:selfOperation.filePath];
NSURL* fileUrlWithScheme = [NSURL fileURLWithPath:selfOperation.filePath];
AddSkipBackupAttributeToItemAtURL(fileUrlWithScheme);
[runLoop removePort:port forMode:NSDefaultRunLoopMode];
[selfOperation completeOperation];
};
在那个地方,在进行链接时,出现错误:
体系结构 i386 的未定义符号:
“ AddSkipBackupAttributeToItemAtURL”,引用自:_ _36-[UpdateFileAsyncOperation start]_block_invoke in UpdateFileAsyncOperation.o ld:未找到体系结构 i386 的符号 clang:错误:链接器命令失败,退出代码为 1(使用 - v 查看调用)
我不明白它为什么会发生,它如何取决于块?我该如何解决?谢谢!
更新:它不依赖于块,我已将函数调用移动到另一个类的地方:错误仍然存在。我试图找出原因