Cocos2D-x 日蚀 java.lang.UnsatisfiedLinkError
Cocos2D-x Eclipse java.lang.UnsatisfiedLinkError
我正在尝试构建我的第一个 Hello World Cocos2D 项目。我正在使用 NDK r10e 并且已经导入了库。
首先在尝试使用 Android 22 构建时遇到此错误,然后按照前面问题中的建议切换到 Android 19,但没有解决。我得到以下 logcat:
07-13 16:04:30.416: E/AndroidRuntime(26892): FATAL EXCEPTION: main
07-13 16:04:30.416: E/AndroidRuntime(26892): Process: com.danielemolinari.HelloWorld, PID: 26892
07-13 16:04:30.416: E/AndroidRuntime(26892): java.lang.UnsatisfiedLinkError: dlopen failed: cannot locate symbol "srand" referenced by "libcocos2dcpp.so"...
07-13 16:04:30.416: E/AndroidRuntime(26892): at java.lang.Runtime.loadLibrary(Runtime.java:365)
07-13 16:04:30.416: E/AndroidRuntime(26892): at java.lang.System.loadLibrary(System.java:526)
07-13 16:04:30.416: E/AndroidRuntime(26892): at org.cocos2dx.lib.Cocos2dxActivity.onLoadNativeLibraries(Cocos2dxActivity.java:207)
07-13 16:04:30.416: E/AndroidRuntime(26892): at org.cocos2dx.lib.Cocos2dxActivity.onCreate(Cocos2dxActivity.java:222)
07-13 16:04:30.416: E/AndroidRuntime(26892): at android.app.Activity.performCreate(Activity.java:5451)
07-13 16:04:30.416: E/AndroidRuntime(26892): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1093)
07-13 16:04:30.416: E/AndroidRuntime(26892): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2377)
07-13 16:04:30.416: E/AndroidRuntime(26892): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2471)
07-13 16:04:30.416: E/AndroidRuntime(26892): at android.app.ActivityThread.access0(ActivityThread.java:175)
07-13 16:04:30.416: E/AndroidRuntime(26892): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1308)
07-13 16:04:30.416: E/AndroidRuntime(26892): at android.os.Handler.dispatchMessage(Handler.java:102)
07-13 16:04:30.416: E/AndroidRuntime(26892): at android.os.Looper.loop(Looper.java:146)
07-13 16:04:30.416: E/AndroidRuntime(26892): at android.app.ActivityThread.main(ActivityThread.java:5602)
07-13 16:04:30.416: E/AndroidRuntime(26892): at java.lang.reflect.Method.invokeNative(Native Method)
07-13 16:04:30.416: E/AndroidRuntime(26892): at java.lang.reflect.Method.invoke(Method.java:515)
07-13 16:04:30.416: E/AndroidRuntime(26892): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1283)
07-13 16:04:30.416: E/AndroidRuntime(26892): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1099)
07-13 16:04:30.416: E/AndroidRuntime(26892): at dalvik.system.NativeStart.main(Native Method)
有什么建议吗?
编辑:已解决
解决错误:
- 在 Android SDK
中安装 Android 19 平台
- 删除项目
- 创建一个新项目
- 编译为Android 19
它适用于任何 Android 设备,甚至是 Lollipop。
建议安装旧版SDK的回答评论:
没必要。您既不需要更改工具链(NDK r9d 而不是在撰写本文时最新和最好的 r10e),也不需要更改目标(API 19 而不是最新和最好的 -nowadays API 23 ).
将以下内容添加到您的应用 Application.mk 就足够了:
APP_PLATFORM := android-<n> # where n is your target API
APP_ABI := <your target platforms, like armeabi-v7a, x86, etc.>
现实情况是,最新的平台版本的 NDK 和 SDK 包含早期版本的改进版本,如果你降级 SDK(或 NDK),你就会给你自己的平台成熟度设置一个上限,在具有向后兼容性的同时,您不需要这样做。
我正在尝试构建我的第一个 Hello World Cocos2D 项目。我正在使用 NDK r10e 并且已经导入了库。
首先在尝试使用 Android 22 构建时遇到此错误,然后按照前面问题中的建议切换到 Android 19,但没有解决。我得到以下 logcat:
07-13 16:04:30.416: E/AndroidRuntime(26892): FATAL EXCEPTION: main
07-13 16:04:30.416: E/AndroidRuntime(26892): Process: com.danielemolinari.HelloWorld, PID: 26892
07-13 16:04:30.416: E/AndroidRuntime(26892): java.lang.UnsatisfiedLinkError: dlopen failed: cannot locate symbol "srand" referenced by "libcocos2dcpp.so"...
07-13 16:04:30.416: E/AndroidRuntime(26892): at java.lang.Runtime.loadLibrary(Runtime.java:365)
07-13 16:04:30.416: E/AndroidRuntime(26892): at java.lang.System.loadLibrary(System.java:526)
07-13 16:04:30.416: E/AndroidRuntime(26892): at org.cocos2dx.lib.Cocos2dxActivity.onLoadNativeLibraries(Cocos2dxActivity.java:207)
07-13 16:04:30.416: E/AndroidRuntime(26892): at org.cocos2dx.lib.Cocos2dxActivity.onCreate(Cocos2dxActivity.java:222)
07-13 16:04:30.416: E/AndroidRuntime(26892): at android.app.Activity.performCreate(Activity.java:5451)
07-13 16:04:30.416: E/AndroidRuntime(26892): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1093)
07-13 16:04:30.416: E/AndroidRuntime(26892): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2377)
07-13 16:04:30.416: E/AndroidRuntime(26892): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2471)
07-13 16:04:30.416: E/AndroidRuntime(26892): at android.app.ActivityThread.access0(ActivityThread.java:175)
07-13 16:04:30.416: E/AndroidRuntime(26892): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1308)
07-13 16:04:30.416: E/AndroidRuntime(26892): at android.os.Handler.dispatchMessage(Handler.java:102)
07-13 16:04:30.416: E/AndroidRuntime(26892): at android.os.Looper.loop(Looper.java:146)
07-13 16:04:30.416: E/AndroidRuntime(26892): at android.app.ActivityThread.main(ActivityThread.java:5602)
07-13 16:04:30.416: E/AndroidRuntime(26892): at java.lang.reflect.Method.invokeNative(Native Method)
07-13 16:04:30.416: E/AndroidRuntime(26892): at java.lang.reflect.Method.invoke(Method.java:515)
07-13 16:04:30.416: E/AndroidRuntime(26892): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1283)
07-13 16:04:30.416: E/AndroidRuntime(26892): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1099)
07-13 16:04:30.416: E/AndroidRuntime(26892): at dalvik.system.NativeStart.main(Native Method)
有什么建议吗?
编辑:已解决 解决错误:
- 在 Android SDK 中安装 Android 19 平台
- 删除项目
- 创建一个新项目
- 编译为Android 19
它适用于任何 Android 设备,甚至是 Lollipop。
建议安装旧版SDK的回答评论:
没必要。您既不需要更改工具链(NDK r9d 而不是在撰写本文时最新和最好的 r10e),也不需要更改目标(API 19 而不是最新和最好的 -nowadays API 23 ).
将以下内容添加到您的应用 Application.mk 就足够了:
APP_PLATFORM := android-<n> # where n is your target API
APP_ABI := <your target platforms, like armeabi-v7a, x86, etc.>
现实情况是,最新的平台版本的 NDK 和 SDK 包含早期版本的改进版本,如果你降级 SDK(或 NDK),你就会给你自己的平台成熟度设置一个上限,在具有向后兼容性的同时,您不需要这样做。