Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 目标c gnustep-无法分离接口和实现文件_Objective C_Gnustep - Fatal编程技术网

Objective c 目标c gnustep-无法分离接口和实现文件

Objective c 目标c gnustep-无法分离接口和实现文件,objective-c,gnustep,Objective C,Gnustep,我正在windows上为objective-c使用gnustep。若我将一个类的接口和实现文件与主文件一起保存,那个么它编译时不会出错,并给出预期的输出 以下是一个例子: // File "classA.h" #import <Foundation/Foundation.h> @interface classA: NSObject { int a; } -(void) print; @end // File "classA.m" #import "classA.h"

我正在windows上为objective-c使用gnustep。若我将一个类的接口和实现文件与主文件一起保存,那个么它编译时不会出错,并给出预期的输出

以下是一个例子:

// File "classA.h"
#import <Foundation/Foundation.h>

@interface classA: NSObject
{
    int a;
}

-(void) print;
@end


// File "classA.m"
#import "classA.h"

@implementation classA

-(void) print
{
    a = 10;
    NSLog(@"a = %i", a);
}
@end


// File "test.m"
#import "classA.h"

int main(int argc, char *argv[])
{
    NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];

    NSLog(@"start");

    classA *objA = [[classA alloc] init];
    [objA print];
    [objA release];

    NSLog(@"done");

    [pool drain];
    return 0;
}
我得到以下错误

undefined reference to `__objc_class_name_myNewClass'
collect2: ld returned 1 exit status
如何保持文件的独立性并成功编译程序

谢谢你的帮助


关于

此处存在链接器错误。很可能,您没有为myNewClass包含所需的头文件

我知道这很旧,但请仔细检查编译文件的名称,以防错误出现在其他文件中

原因: 在上面的代码中没有引用类<强> MyNealCype < /St>,除了基脚之外没有其他的导入。< /P> 代码注释中的文件名与您要编译的文件名不同

// File "test.m"

gcc `gnustep-config --objc-flags` -o program program.m
从外观上看,给定的代码应该在拆分时编译


另外,关于“如何包含“已编译文件”?的问题,假设您指的是.o文件,您只需要包含头文件(.h),并确保编译器可以找到匹配的.o文件。相关:

我做了。我包括使用#import“myNewClass.h”。我的myNewClass.h和myNewClass.m文件与myTest.m文件位于同一文件夹中。myNewClass.m文件是编译文件的一部分吗?您可能无法链接到myNewClass.o(无法读取您的命令行,它已包装)。对此我不确定。我已经使用#import“myNewClass.h”将myNewClass.h包含在myNewClass.m和myTest.m中。还有,我如何包括“编译文件”?Regardsy您应该尝试为gnustepMake使用makefile,这比手动调用编译器更全面。请查看本教程:
// File "test.m"

gcc `gnustep-config --objc-flags` -o program program.m