我對Objective C
完全陌生,我試圖用它來包裝C-library
。我有一個main.m
wrap.m
和wrap.h
文件。從我在頭文件中收集的內容中,我包括@interface
和源文件,我將包括@implementation
但是,我並不真正瞭解要在每個文件中包含哪些內容。現在我的主要文件是:在目標C中實現標頭C
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
文件,但我不知道該怎麼做。任何幫助都將不勝感激!
您正在編寫C方法,而不是Objective-C方法。沒有定義Objective-C對象,因此您將.h編碼爲C.否@interface,無屬性。 –
我正在爲上面顯示的當前代碼製作Objective-C包裝,所以我需要Objective-C代碼 –