Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ssl/3.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 带有Arc和Gui的Gnustep在不兼容的ABI中失败_Objective C_Automatic Ref Counting_Gnustep - Fatal编程技术网

Objective c 带有Arc和Gui的Gnustep在不兼容的ABI中失败

Objective c 带有Arc和Gui的Gnustep在不兼容的ABI中失败,objective-c,automatic-ref-counting,gnustep,Objective C,Automatic Ref Counting,Gnustep,基本上,我遵循了这里的说明: 通过额外的步骤构建gui并返回 如果我构建并运行一个非gui程序,所有这些都可以正常工作。仅当我添加使用gui的内容时,如以下所示: // Created by Tobias Lensing on 2/22/13. #import <Foundation/Foundation.h> #import <AppKit/AppKit.h> #import <dispatch/dispatch.h> int main(int argc

基本上,我遵循了这里的说明:

通过额外的步骤构建gui并返回

如果我构建并运行一个非gui程序,所有这些都可以正常工作。仅当我添加使用gui的内容时,如以下所示:

//  Created by Tobias Lensing on 2/22/13.
#import <Foundation/Foundation.h>
#import <AppKit/AppKit.h>
#import <dispatch/dispatch.h>

int main(int argc, const char * argv[])
{    
    @autoreleasepool {
        int multiplier = 7;
        int (^myBlock)(int) = ^(int num) {
            return num * multiplier;
        };

        NSLog(@"%d", myBlock(3));

        dispatch_queue_t queue = dispatch_queue_create(NULL, NULL); 

        dispatch_sync(queue, ^{
            printf("Hello, world from a dispatch queue!\n");
        });

//            dispatch_release(queue);       // ARC takes care of this 
    }

    @autoreleasepool {
        [NSApplication sharedApplication];
        NSRunAlertPanel(@"Test", @"Wow it works!", @"OK", nil, nil);
    }

    return 0;
}
clang `gnustep-config --objc-flags` `gnustep-config --objc-libs` -fobjc-arc -fobjc-runtime=gnustep -fblocks -lobjc -ldispatch -lgnustep-gui test.m
// [NSApplication sharedApplication];
// NSRunAlertPanel(@"Test", @"Wow it works!", @"OK", nil, nil);
它编译和链接时没有错误

但是,当我运行它时,它会吐出以下丑陋的图形:

Hello, world from a dispatch queue!
Objective-C ABI Error: Loading modules from incompatible ABI's while loading .GSBackend.m
a.out: /home/lloyd/projects/ThirdParty/BuildGnuStep/libobjc2/loader.c:53: void __objc_exec_class(struct objc_module_abi_8 *): Assertion `objc_check_abi_verion(module)' failed.
Aborted (core dumped)
我已经向自己保证没有其他版本的libobjc(这是在虚拟机上的,所以我可以回去重做我的步骤)

评论如下:

//  Created by Tobias Lensing on 2/22/13.
#import <Foundation/Foundation.h>
#import <AppKit/AppKit.h>
#import <dispatch/dispatch.h>

int main(int argc, const char * argv[])
{    
    @autoreleasepool {
        int multiplier = 7;
        int (^myBlock)(int) = ^(int num) {
            return num * multiplier;
        };

        NSLog(@"%d", myBlock(3));

        dispatch_queue_t queue = dispatch_queue_create(NULL, NULL); 

        dispatch_sync(queue, ^{
            printf("Hello, world from a dispatch queue!\n");
        });

//            dispatch_release(queue);       // ARC takes care of this 
    }

    @autoreleasepool {
        [NSApplication sharedApplication];
        NSRunAlertPanel(@"Test", @"Wow it works!", @"OK", nil, nil);
    }

    return 0;
}
clang `gnustep-config --objc-flags` `gnustep-config --objc-libs` -fobjc-arc -fobjc-runtime=gnustep -fblocks -lobjc -ldispatch -lgnustep-gui test.m
// [NSApplication sharedApplication];
// NSRunAlertPanel(@"Test", @"Wow it works!", @"OK", nil, nil);
显然,除了GUI之外,所有的东西都可以编译和运行


当我从头开始构建所有东西时,我怎么能有两个ABI?我是否需要以不同的方式配置GUI?我对此困惑了几个星期。

对不起,评论时间太长了:

我不确定你的确切问题,但你有3个阿比’要考虑,而不是正常的2(Gnu步骤,易碎,不易碎)…我不是这方面的绝对专家,但我相信你可以用gnustep来对抗较新的苹果非易碎ABI。。。因此,这可能不是您拥有的ABI,但它是通过以下选项选择的:
gnustep config--objc libs
,您可以尝试忽略它

我一直使用gnustepmake,但我已经很久没有做过很多gnustepmake了,不知道这是否仍然是首选


我确实发现了一条有趣的线索:

好吧,在经历了很多混乱之后,我发现,令人惊讶的是,我把所有事情都搞错了

我会进入漫长、深刻、痛苦的过程,但是


遗憾的是,在问我的问题之前,我没有找到这个网站。现在我有了目标C、弧、块和GNUstep

我必须添加-L/usr/GNUstep/Local/Library/Libraries才能将其链接到link,但它仍然有相同的错误。这个帖子可能很有趣,但我不确定它有什么关系(因为它已经快一岁了)。这是一个明显的笑话。别毁了它。我不确定这个笑话是什么,但它解决了我的问题。我相信你链接到了网站的首页,而不是文章本身。你可能是指这个: