基本上,我跟着這裏的說明:http://wiki.gnustep.org/index.php/GNUstep_under_Ubuntu_LinuxGNUstep的弧形和桂失敗不兼容的ABI
爲建設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
它編譯並沒有錯誤鏈接。
當我運行它,但是,它吐出以下醜克:
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的(這是一個虛擬機上,所以我可以去回來重做我的步驟)。
談到了以下工作:
// [NSApplication sharedApplication];
// NSRunAlertPanel(@"Test", @"Wow it works!", @"OK", nil, nil);
,一切從GUI編譯和運行,除了明顯。
當我從頭開始構建所有東西時,我如何擁有兩個ABI?我需要以不同的方式配置GUI嗎?我一直在困惑這個幾個星期。
根據該博客文章今天發佈... –
這是一個明顯的笑話不要毀了它。 –
好吧,不知道這個笑話是什麼,但它解決了我的問題。 –