2009-02-24 51 views
0

我正在嘗試使用XCode 3.1.2將包括SDL和WxWidgets的項目移植到MacOS X.該項目相當大,但我終於成功地編譯了它。但是,在消息「MyApplication已退出狀態99」後立即退出。在到達main()之前,我的程序是否崩潰?

出於調試目的,我改變了我的主要功能如下所示:

int main(int argc, char *argv[]) 
{ 
    cout <<"hello world"; 
    cout <<"and goodbye"; 
    throw "test"; 
} 

我還添加了斷點,所有三個主要功能線。但是,調試器仍然不會中斷,應用程序在啓動後仍然會退出。

調試控制檯輸出如下:

(GDB)運行[切換處理94140 本地線程0x3607]正在運行...

調試器停止。找不到test.xml !

調試器停止。計劃與 狀態值退出:99(GDB)

我不知道是什麼文件「找不到的test.xml」指的是,爲什麼Xcode是在第一時間尋找它,或者如果它是與我的問題有關。

這是我的第一個XCode項目,所以我對如何繼續無能爲力。任何提示將不勝感激。

回答

0

最後,我發現從錯誤地包含的第三方庫的單元測試文件中有一個不同的main()函數。

1

您可能沒有正確的項目設置。你選擇了哪個項目模板?

5

SDL在你的主要功能中使用了一些黑客技術。 您的主代碼可能永遠不會到達。

試着打破「開始」並從那裏開始步 - AFAIK「開始」是任何男子氣概可執行文件的入口點。

你所看到的看起來像你的二進制退出錯誤代碼「99」。 您可能想要在SDL或WX中查找錯誤代碼99。

稍後從SDL站點編輯::頭文件「SDL_main.h」使用函數宏將您的main()函數重新映射到SDL_main()函數。

0

我希望test.xml是該單元測試的數據文件,它可能已經預期它在一個默認目錄中。 Project>編輯Active Executable,並確保啓動時的工作目錄是代碼期望的目錄(根目錄,項目目錄或可執行目錄)。

不過,我不得不說,我不建議通過移植您不熟悉的源代碼來學習新工具。您將很難分辨出由於SDL/WxWidgets的奇怪期望導致的問題,學習Xcode會產生哪些問題。

+0

到目前爲止這是一個粗略的方法,但我認爲最糟糕的事情已經快要結束了。整個項目基於開源的跨平臺庫,這就是爲什麼我自己試圖做到這一點。只要我自己的代碼正在執行並且調試器能夠正常工作,我希望沒問題。 – 2009-02-25 08:59:17

相關問題