在Android上使用c ++ 11时的致命信号11(Galaxy 4s)

时间:2013-11-16 15:26:08

标签: android c++11 lambda cocos2d-x

我正在使用cocos2d-x 2.2进行游戏,我对编译和编译没有任何问题。在xcode&上构建c ++ 11的东西IOS。编译和编译也没问题。建立在android项目上。

但问题是当我尝试使用lambda函数调用c ++ 11 feature std :: function时,我遇到了运行时错误。

11-17 00:13:38.201:A / libc(5419):致命信号11(SIGSEGV)位于0x000001d0(代码= 1),线程5446(线程-27308)

代码没什么特别的。具有std :: function类型的成员变量并保存lambda函数,称为特定时序。

会出现什么问题?我的测试设备是Gallxy 4s。

完全相同的代码在ios 7和iPhone 4上运行得非常好。

任何建议都会很棒。

EDIT1。已添加简化代码。

class SimpleObject {
  typedef std::function<void (unsigned bx, unsigned by)> ClickEventHandler_t;
  ClickEventHandler_t m_click_handler;

  void SetClickEventHandler(ClickEventHandler_t handler) { m_click_handler = handler; }
};

// setup

obj->SetClickEventHandler([this](unsigned bx, unsigned by) {  TrapClicked(bx, by); });

void TrapClicked(unsigned bx, by)
{
  CCLog("Trap clicked!");
}

// call

if (m_click_handler) 
  m_click_handler(boardx, boardy);

1 个答案:

答案 0 :(得分:0)

我在尝试加载tmx地图时遇到了同样的错误,其中对象项(如图像和图块集)不在同一目录中。他们被引用到我的电脑路径。它成功编译顺便没有错误。所以请确保你在同一个&#34;资源&#34;中调用一个项目。目录不在它之外。