gpt4 book ai didi

objective-c - 无法在 Ubuntu 上编译 Objective-C 代码

转载 作者:行者123 更新时间:2023-12-04 18:36:10 27 4
gpt4 key购买 nike

所以我有这段代码......

/**
* cdb.m
* Copyright (C) 2013 Naveen Mathew. All rights reserved.
*/

#import <objc/Object.h>
#import "cdb.h"
#import <stdio.h>
#import <stdlib.h>

@implementation CDB : Object
{

}

- (int) main {
printf("Hello world");
return 0;
}

@end

int main(void)
{
CDB *myNumber = [CDB new]; // equal to [[Number alloc] init]
[myNumber main];

return 0;
}

我想在 Ubuntu 13.04 中编译它,但没有 GNUStep 给我的所有废话。所以我使用 GNU Objective C 运行时(gobjc)但是当我编译时我得到以下......
clang -Wall -lobjc -o cdb cdb.m -I/usr/lib/gcc/x86_64-linux-gnu/4.7/include
cdb.m:25:21: warning: class method '+new' not found (return type defaults to
'id') [-Wobjc-method-access]
CDB *myNumber = [CDB new]; // equal to [[Number alloc] init]
^ ~~~
1 warning generated.

当我运行程序时,我遇到了段错误......我使用的是 gobjc 4.7。我用 gobjc 4.6 尝试过...它可以编译,但我仍然遇到段错误...

最佳答案

我认为一些古老的运行时已经实现了 +new 和 friends。对于像 gnustep-runtime 这样的较新的运行时,包括一个非常不同的 GCC 附带的,我认为,您必须使用类别或其他方式实现自己的胡扯。您可以只剪切和粘贴 GNUstep 的 NSObject 实现,但这对您来说可能太棘手了,因为它会在 malloc 前加上 retain counter 等,否则您可能想要实现自己的方式来维护引用计数,例如使用哈希映射或任何事物。如果单独使用 GNUstep-base 对您来说太多废话,您也可以尝试像 ObjFW 这样的替代框架。

关于objective-c - 无法在 Ubuntu 上编译 Objective-C 代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18038430/

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