3

我正在研究linux + eclipse。

我已经按照 wiki 提供的步骤更新了我的代码。

1º我创建了一个新的eclipse项目。2º 我运行 hello world 并且它有效。3º 我将旧代码放在类和资源上。4º 我用新文件更新了 appdelegate.cpp .h 和 jni/Android.mk。5º它编译正确。

6º 从 Eclipse 发射我得到以下异常:

试图加载 lib /data/data/org.piero.game/lib/libgame.so
致命信号 11.

出了点问题,但我不知道发生了什么。

相同的代码适用于 xcode 项目。
我没有得到 CCLOG 消息 con Appdelegate 构造函数,也没有在 main.cpp 上的 Java_org_cocos2dx_lib_Cocos2dxRenderer_nativeInit 上。

日志猫:

---- 日志测试运行 HELLO WORLD ------
06-13 18:29:07.189: D/dalvikvm(11613): 试图加载 lib /data/data/piero.corporation.nyan/lib/libgame.so 0x40f87190
06-13 18:29:07.199: D/dalvikvm(11613): 添加共享库 /data/data/piero.corporation.nyan/lib/libgame.so 0x40f87190
06-13 18:29:07.269:W/apk 路径(11613):/data/app/piero.corporation.nyan-2.apk
06-13 18:29:07.409:D/SurfaceView(11613):pckname = pipero.corporation.nyan
06-13 18:29:07.809: D/libEGL(11613): 加载 /system/lib/egl/libGLES_android.so
06-13 18:29:07.859: D/libEGL(11613): 加载 /system/lib/egl/libEGL_mali.so
06-13 18:29:07.919: D/libEGL(11613): 加载 /system/lib/egl/libGLESv1_CM_mali.so
06-13 18:29:07.929: D/libEGL(11613): 加载 /system/lib/egl/libGLESv2_mali.so
-  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  - - 好的  -  -  -  -  -  - ------------------

---- LOG TEST RUNNING TEST 将 android 文件更改为我的 ------
06-13 18:36:31.789: D/dalvikvm(12046): 试图加载 lib /data/data/piero.corporation.nyan/lib/libgame.so 0x40f8de18
06-13 18:36:31.799: A/libc(12046): 致命信号 11 (SIGSEGV) 在 0x00000030 (code=1)
-  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  - - 失败  -  -  -  -  - ----------------

我尝试在另一台平板电脑(Android 3.2)中编译,我遇到了同样的问题。这次的日志是:

06-12 15:16:16.610:I/DEBUG:* * 06-12 15:16:16.610:I/DEBUG:构建指纹:'asus/WW_epad/TF101:3.2.1/HTK75/WW_epad-8.6.5.13- 20110925:user/release-keys' 06-12 15:16:16.610: I/DEBUG: pid: 1183, tid: 1183 >>> pipero.corp.test

所以,信号 11 SEGV_MAPERR,我认为这是编译的问题,找到了库,但程序无法正确加载它。JNI 不执行 jni_Onload。

有什么想法???

提前致谢。

4

2 回答 2

3

在您的项目文件夹中,仔细检查 lib 文件是否实际上在您的 android libs 文件夹中。

[cocos2d-x root]/[game_name]/android/libs

里面应该有一个名为 libgame.so 的文件。

如果编译正常,应该会生成 .so 文件。编译时,我发现在 Eclipse 中“刷新”项目很有帮助,以便 Eclipse 重新扫描目录以查找任何新文件/修改以打包到 APK 文件中进行部署。

我相信您可以在 Eclipse 中启用一个选项来自动检测文件系统更改,但我不确定该选项在哪里。

于 2012-06-11T20:09:01.923 回答
3

当你收到致命信号 11 时,也许你想看看这个。这是一个分段错误,访问未分配的内存位置,通常是由于编程错误。

祝你好运,但由于有些人对新版本没有问题,最有可能的情况是你有一个旧版本没有问题的编程错误。

于 2012-06-19T20:25:23.600 回答