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函数不能使用









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