首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >带圆弧和Gui的Gnustep失败了不兼容的ABI

带圆弧和Gui的Gnustep失败了不兼容的ABI
EN

Stack Overflow用户
提问于 2013-10-21 14:00:11
回答 2查看 250关注 0票数 1

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

有额外的步骤来建立盖伊和回来。

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

代码语言:javascript
复制
//  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;
}

我将其编译如下:

代码语言:javascript
复制
clang `gnustep-config --objc-flags` `gnustep-config --objc-libs` -fobjc-arc -fobjc-runtime=gnustep -fblocks -lobjc -ldispatch -lgnustep-gui test.m

它编译和链接没有错误。

然而,当我运行它时,它会吐出下面的丑克:

代码语言:javascript
复制
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 (这是在虚拟机上,所以我可以回去重做我的步骤)。

评论如下:

代码语言:javascript
复制
// [NSApplication sharedApplication];
// NSRunAlertPanel(@"Test", @"Wow it works!", @"OK", nil, nil);

显然,除了GUI之外,一切都在编译和运行。

当我从头开始构建一切的时候,我怎么能有两个ABI呢?我需要以不同的方式配置GUI吗?这件事我已经困惑了几个星期了。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-10-25 21:26:32

好吧,经过一番周旋之后,我发现,令人惊讶的是,我把一切都搞错了。

我会进入漫长的,深刻的,痛苦的过程,但是这个网站实际上有一个很好的设置,脚本和所有的东西。

遗憾的是,在问我的问题之前,我没有找到这个网站。现在我有目标C,ARC,积木和GNUstep!

票数 1
EN

Stack Overflow用户

发布于 2013-10-21 14:13:52

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

嗯,我不确定你的确切问题,但你有3个ABI‘’,而不是仅仅是正常的2(小步,脆弱,不脆弱).我不是这个领域的绝对专家,但我相信你可以挑战更新的苹果非脆弱ABI.因此,这可能不是您拥有的ABI,但它是被选中的:gnustep-config --objc-libs,您可以尝试省略.

我一直使用gnustep-make,但我已经很长时间没有这么做过了,并且不知道这是否仍然是首选的。

我确实找到了一条有趣的线索:http://comments.gmane.org/gmane.comp.lib.gnustep.general/38698

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19496593

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档