cocos2dx3.0 問題集



       

1.Failed to allocate memory: 8 (andriod模擬器無法啓動)

           

今天因爲項目需要要新建一個項目,但是模擬器創建成功卻不能啓動,仔細看了一下,有如下錯誤信息提示:

[2013-05-21 15:23:43 - Emulator] Failed to allocate memory: 8
[2013-05-21 15:23:43 - Emulator]
[2013-05-21 15:23:43 - Emulator] This application has requested the Runtime to terminate it in an unusual way.
[2013-05-21 15:23:43 - Emulator] Please contact the application's support team for more information.

最後百度查詢得知:模擬器無法啓動的原因是電腦內存不足了,我們在新建模擬器的時候,默認會分配1024M(1G)的內存,

因爲我們的電腦本來就消耗了很大的內存了,所以無法再給模擬器分配1G的內存,導致模擬器無法啓動,解決方式就是打開

模擬器選擇界面,選中無法啓動的模擬器,點擊右側的“Edit”按鈕,在彈出的編輯選項中,將“Memery Option”改爲512M或者更低。


2.Android模擬器橫屏切換方法

很多沒有購買真機的網友不知道如何切換Android模擬器到橫屏顯示。常規的顯示爲HVGA-P(port),即分辨率爲320x480如果使用橫屏(land)。

如果模擬器尚未啓動,可以在Eclipse的項目Run as=>Open Run Dialog對話框中設置,如果android模擬器已經啓動後,可以使用快捷鍵F12或Ctrl+F11來切換。

當然是用命令行僅僅啓動模擬器可以使用參數emulator.exe -skin HVGA-L 來啓動。

  需要注意的是,切換land或port可以通過資源文件來讓界面自適應窗體,但程序可能會重載onCreate,避免的方法可以通過在androidmanifest.xml文件

中重新定義方向,以及根據Activity的重寫onConfigurationChanged(Configuration newConfig)方法來控制,相關的可以在Android SDK中獲取到。




3.如何在android真機調試程序

步驟: menu---> 設置 ---> 應用程序 ---> 開發 , 選擇【USB調試】2. 用USB連接手機和電腦,並確保成功。

步驟: 在windows下執行c:\adb devices,

查看手機是否已經連接成功。

3. 設置應用程序爲調試模式。操作: 編輯AndroidManifest.xml 增加調試參數android:debuggable="true", 如下:

4. 執行真機調試操作:ECLIPSE調試對話框中,Target窗口中選擇Manual,點擊【debug】按鈕,選擇真機設備,開始調試。

注:不管是否啓用ECLIPSE環境,任何Android軟件只要在真機上運行發生異常,都可以在命令行窗口下查看具體異常信息

:執行:.\adb logcat 可以查看到更多的系統異常消息。



 4..fatal error C1083: 無法打開包括文件:“extensions/ExtensionMacros.h”: No such file or directory”。


可以採用下列的操作。
第一步:在項目中添加附加項目。

A:在“解決方案資源管理器”中找到整個解決方案,右擊,選擇“添加”->“現有項目”。在彈出的對話框中找到“項目目錄/cocos2d/cocos/editor-support/cocostudio/proj.win32/libCocoStuido”點擊確定。
B:在“解決方案資源管理器”中找到整個解決方案,右擊,選擇“添加”->“現有項目”。在彈出的對話框中找到“項目目錄/cocos2d/cocos/gui/proj.win32/libGUI”點擊確定。
C:在“解決方案資源管理器”中找到整個解決方案,右擊,選擇“添加”->“現有項目”。在彈出的對話框中找到“項目目錄/cocos2d/extensions/proj.win32/libExtensions”點擊確定。


在你導放完成之後,你的項目結構看起來像這樣。


第二步:你需要在你的項目中引用這些剛導入的項目。
對你的項目右鍵,選擇“引用...”。在彈出的屬性頁中點選下面的“添加新引用”。在彈出的子級對話框中勾選我們剛纔剛加入的三個lib項目(如圖),點擊確定,這樣就完成添加項目對庫的引用。

第三步:爲你的項目添加包含目錄。

$(EngineRoot)
$(EngineRoot)cocos
$(EngineRoot)cocos\editor-support

最後編譯一下,完成此次附加項目的添加


5.cocos2d-x 控制檯輸出日誌


在2dx中用CCLog輸出日誌,但是在vs的控制檯中由於信息很多,很難發現。可以用下面方法,會重新啓動一個黑色的控制檯來輸出日誌

修改main.c文件,如下:

[cpp]
  1. #include "main.h"  
  2. #include "AppDelegate.h"  
  3. #include "CCEGLView.h"  
  4. #include "net/NetWork.h"  
  5. #include "adapter/RouterAdapter.h"  
  6.   
  7. USING_NS_CC;  
  8.   
  9. #define USE_WIN32_CONSOLE  
  10.   
  11. int APIENTRY _tWinMain(HINSTANCE hInstance,  
  12.                        HINSTANCE hPrevInstance,  
  13.                        LPTSTR    lpCmdLine,  
  14.                        int       nCmdShow)  
  15. {  
  16.     UNREFERENCED_PARAMETER(hPrevInstance);  
  17.     UNREFERENCED_PARAMETER(lpCmdLine);  
  18.   
  19. #ifdef USE_WIN32_CONSOLE  
  20.     AllocConsole();  
  21.     freopen("CONIN$","r",stdin);  
  22.     freopen("CONOUT$","w",stdout);  
  23.     freopen("CONOUT$","w",stderr);  
  24. #endif  
  25.   
  26.     // create the application instance  
  27.     CCEGLView* eglView = CCEGLView::sharedOpenGLView();  
  28.     eglView->setViewName("MT");  
  29.     //eglView->setFrameSize(480,320);  
  30.   
  31.     return CCApplication::sharedApplication()->run();  
  32.   
  33. #ifdef USE_WIN32_CONSOLE  
  34.     FreeConsole();  
  35. #endif  
  36.   
  37. }  
#include "main.h"
#include "AppDelegate.h"
#include "CCEGLView.h"
#include "net/NetWork.h"
#include "adapter/RouterAdapter.h"

USING_NS_CC;

#define USE_WIN32_CONSOLE

int APIENTRY _tWinMain(HINSTANCE hInstance,
                       HINSTANCE hPrevInstance,
                       LPTSTR    lpCmdLine,
                       int       nCmdShow)
{
    UNREFERENCED_PARAMETER(hPrevInstance);
    UNREFERENCED_PARAMETER(lpCmdLine);

#ifdef USE_WIN32_CONSOLE
	AllocConsole();
	freopen("CONIN$","r",stdin);
	freopen("CONOUT$","w",stdout);
	freopen("CONOUT$","w",stderr);
#endif

    // create the application instance
    CCEGLView* eglView = CCEGLView::sharedOpenGLView();
    eglView->setViewName("MT");
    //eglView->setFrameSize(480,320);

    return CCApplication::sharedApplication()->run();

#ifdef USE_WIN32_CONSOLE
	FreeConsole();
#endif

}


注意宏定義: #define USE_WIN32_CONSOLE 要加上這一句,否則在編譯android文件的時候會編譯出錯,要想在控制檯上輸出中文,要用printf函數,否則會使亂碼。

同時要注意 命名空間的引用,否則printf函數不能使用









發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章