2009-10-05 66 views
0

我正在使用Ogre3D進行一個項目。我們最近將我們的項目移植到MacOSX,但有一些東西與Windows API相關聯。特別是,我不知道這個應該怎麼翻譯:如何在MacOSX下的Ogre項目中獲得輸出控制檯?

#if defined(__WIN32__) || defined(_WIN32) 
    AllocConsole(); 
#endif 

這將是很好的移植Linux哪天下的項目,所以有分配標準輸出/輸入控制檯的Unix兼容的方式是什麼?

謝謝

回答

3

但從UNIX點,因爲我不是在特定的Mac開發經驗。

控制檯默認爲「分配」。您不能命令操作系統打開控制檯。您可以告訴您正在使用的IDE在終端中打開它,或者,如果它支持該功能,則儘管使用GUI,仍然可以將當前的應用程序創建爲控制檯應用程序。

我的意思是說默認分配控制檯?每個進程實際上從調用進程獲得其stdin,stdoutstderr(文件標識符0,1和2)。所以除非打電話過程(bash,Finder,不管)方便忘記離開那些打開,你總是有一個控制檯打開...但也許看不見?

獲取控制檯的最簡單方法是從終端啓動應用程序,因爲Finder會從GUI執行此操作。請記住,.apps實際上文件夾:

/projects/myapp$ ./BuiltApplication.app/Contents/MacOS/BuiltApplication 

搜索設置當前工作目錄,其中的.app包所在的文件夾,所以上述模擬這一切最好的。

此外,請查看MacOS附帶的/Applications/Utilities/Console.app控制檯應用程序。控制檯通常用於查看標準輸出和標準錯誤。我不能測試這個,因爲我不在Mac上,但我實際上已經發現一些消息來源表示stdout和stderr應該在那裏重定向。 See this post

您可以使用Console.app看到以正常方式啓動的應用程序的輸出,因爲推出的基礎設施特別是他們發送和stdoutstderr。您也可以使用asl例程來查詢日誌,或者如果您願意,可以執行更復雜的日誌記錄。