gpt4 book ai didi

objective-c - 在 Objective C 中实现 header

转载 作者:行者123 更新时间:2023-11-30 17:47:02 25 4
gpt4 key购买 nike

我对 Objective C 完全陌生,我正在尝试使用它来包装 C 库。我有一个 main.m wrap.mwrap.h 文件。根据我在头文件中收集的信息,我包含了 @interface ,在源文件中我将包含 @implementation 但是我并不真正理解每个文件中应包含什么内容。现在我的主文件是:

int copy_data(struct archive *ar, struct archive *aw) {

for (;;) {
const void *buff;
size_t size;
off_t offset;

int r = archive_read_data_block(ar, &buff, &size, &offset);
if (r == ARCHIVE_EOF)
return (ARCHIVE_OK);

archive_write_data_block(aw, buff, size, offset);
}
}

int main(int argc, const char * argv[])
{

@autoreleasepool {

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

/* Select which attributes we want to restore. */
flags = ARCHIVE_EXTRACT_TIME;
flags |= ARCHIVE_EXTRACT_PERM;
flags |= ARCHIVE_EXTRACT_ACL;
flags |= ARCHIVE_EXTRACT_FFLAGS;

a = archive_read_new();
archive_read_support_format_all(a);
archive_read_support_compression_all(a);
ext = archive_write_disk_new();
archive_write_disk_set_options(ext, flags);
archive_write_disk_set_standard_lookup(ext);
r = archive_read_open_filename(a, argv[1], 10240);

for (;;) {
r = archive_read_next_header(a, &entry);
if (r == ARCHIVE_EOF)
break;

r = archive_write_header(ext, entry);
if (archive_entry_size(entry) > 0) {
copy_data(a, ext);
}

archive_write_finish_entry(ext);
}
archive_read_close(a);
archive_read_free(a);
archive_write_close(ext);
archive_write_free(ext);
NSLog(@"No Issues");

}
return 0;
}

到目前为止,我在 wrap.h 文件中得到的是:

typedef struct{
int *a;
int *ext;

}archive;

@interface main : NSObject

@property int flags;
@property int r;

我不知道这是否接近我需要做的,并且我的 ARCHIVE_EXTRACT 上出现错误,说它们是未声明的标识符,我认为它们也必须进入我的 wrap.h 文件,但我不知道该怎么做。任何帮助将不胜感激!

最佳答案

如果您使用 CommandLineTool 模板在 Xcode 中启动项目,您可以选择“C”或“C++”语言,这样您就不必与 Objective-C 发生冲突。

You can do a project in C

main.c is the file here

对于您当前拥有的 .h 文件,不要对“main”执行“@property”或“@interface” >”。 “main”是一个 C 风格的函数,而不是 Objective-C 的东西。

关于objective-c - 在 Objective C 中实现 header ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19070217/

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