2013-10-21 29 views
1

基本上,我跟着這裏的說明: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嗎?我一直在困惑這個幾個星期。

回答

1

好了,經過一番瞎搞我發現,驚喜,我正在建造的一切錯誤。

我會進入漫長,深沉,痛苦的過程,但this website actually has a nice set up, scripts, and everything

可悲的是我沒有找到這個網站之前問我的問題。現在我有Objective C,ARC,塊和GNUstep!

+0

根據該博客文章今天發佈... –

+0

這是一個明顯的笑話不要毀了它。 –

+0

好吧,不知道這個笑話是什麼,但它解決了我的問題。 –

1

對不起,太長評論:

好吧,我不知道你確切的問題,但你有3個ABI'a考慮,而不僅僅是正常的2(GNUstep的,脆弱的,不易碎)。 ..我不是該領域的絕對專家,但我相信你可以針對新的非易碎ABI蘋果運行gnustep ...所以這可能不是你擁有的ABI,但它是獲得選擇與:gnustep-config --objc-libs,你可以嘗試省略...

我一直使用gnustep-make,但我沒有做很多gnustep很長一段時間,並不知道如果仍然是首選。

我發現一個有趣的線索:http://comments.gmane.org/gmane.comp.lib.gnustep.general/38698

+0

我不得不添加-L/usr/GNUstep/Local/Library/Libraries來讓它鏈接,但它仍然有相同的錯誤。這個線程可能很有趣,但我不確定它是如何相關的(因爲它已經過去了一年)。 –

相關問題