gpt4 book ai didi

android - 无法链接 libSTLport_shared,即使它存在...?

转载 作者:可可西里 更新时间:2023-11-01 18:39:17 24 4
gpt4 key购买 nike

我正准备开始用头撞墙。我已经阅读了我能找到的关于这个问题的每一个 SO 线程,阅读了关于这个问题的每一个谷歌结果,但找不到下蹲。我正在构建一个 android 应用程序,我在其中用 C++ 编写了一个 2D 引擎,并且我正在使用 STLport 的共享版本和 NDK r6b。生成 libSTLport_shared 的 .so 文件并成功复制到我的 libs 文件夹中。我什至在设备上使用 adb shell 检查并正确复制了 .so 文件。

我尝试了各种解决方案,例如修改我的 .mk 文件以明确声明 libSTLport_shared.so 为必需模块。在编译期间,一切顺利,它显示在 APK 中,并成功复制到设备。但是我收到此错误:

09-17 17:35:26.450: DEBUG/dalvikvm(19277): Trying to load lib /data/data/ca.ascensionsystems.mypackagename/lib/libstlport_shared.so 0x476c6f30
09-17 17:35:26.450: INFO/dalvikvm(19277): Unable to dlopen(/data/data/ca.ascensionsystems.mypackagename/lib/libstlport_shared.so): Cannot load library: link_image[1995]: failed to link libstlport_shared.so
09-17 17:35:26.450: WARN/dalvikvm(19277): Exception Ljava/lang/UnsatisfiedLinkError; thrown during Lca/ascensionsystems/mypackagename/Ascengine;.<clinit>
09-17 17:35:26.450: WARN/dalvikvm(19277): threadid=8: thread exiting with uncaught exception (group=0x40025a70)
09-17 17:35:26.470: VERBOSE/WindowManager(4837): Remove Window{479ca678 Starting ca.ascensionsystems.mypackagename paused=false}: mSurface=Surface(name=Starting ca.ascensionsystems.mypackagename, identity=90) mExiting=false isAnimating=true app-animation=android.view.animation.AnimationSet@4794fa10 inPendingTransaction=false mDisplayFrozen=false
09-17 17:35:26.470: ERROR/WindowManager(4837): return in removeWindowLocked
09-17 17:35:26.490: ERROR/AndroidRuntime(19277): FATAL EXCEPTION: GLThread 9
09-17 17:35:26.490: ERROR/AndroidRuntime(19277): java.lang.ExceptionInInitializerError
09-17 17:35:26.490: ERROR/AndroidRuntime(19277): at ca.ascensionsystems.mypackagename.GL2JNIView$Renderer.onSurfaceChanged(GL2JNIView.java:336)
09-17 17:35:26.490: ERROR/AndroidRuntime(19277): at android.opengl.GLSurfaceView$GLThread.guardedRun(GLSurfaceView.java:1327)
09-17 17:35:26.490: ERROR/AndroidRuntime(19277): at android.opengl.GLSurfaceView$GLThread.run(GLSurfaceView.java:1118)
09-17 17:35:26.490: ERROR/AndroidRuntime(19277): Caused by: java.lang.UnsatisfiedLinkError: Library stlport_shared not found
09-17 17:35:26.490: ERROR/AndroidRuntime(19277): at java.lang.Runtime.loadLibrary(Runtime.java:461)
09-17 17:35:26.490: ERROR/AndroidRuntime(19277): at java.lang.System.loadLibrary(System.java:557)
09-17 17:35:26.490: ERROR/AndroidRuntime(19277): at ca.ascensionsystems.mypackagename.Ascengine.<clinit>(Ascengine.java:26)
09-17 17:35:26.490: ERROR/AndroidRuntime(19277): ... 3 more
09-17 17:35:26.500: WARN/ActivityManager(4837): Force finishing activity ca.ascensionsystems.mypackagename/.mypackagenameActivity

请注意,我用“mypackagename”替换了我的真实包名称,以免泄露我即将推出的游戏的 super secret 名称。 :) 另请注意,Ascengine 是另一个 .SO,我的主要应用程序 SO,它是我的 2D 引擎。

有人遇到过这样的问题吗?有任何想法吗?另请注意,我在 libSTLport_shared 上做了一个 objdump 来检查它的 deps。我使用 DDMS 确认它们存在于我的设备上,甚至在尝试加载 libSTLport_shared 之前将它们显式加载到我的 java 代码中。没有区别。提前致谢!

还有

这是问题的第二个可选组成部分。我想到但尚未尝试的一种解决方案是使用 System.load(absolutePathToLibrary) 但我找不到如何在 java 中生成此路径。出于显而易见的原因,我不想对其进行硬编码。再次感谢!

最佳答案

好吧,看来我找到了某种解决方案。我基本上只是放弃使用共享版本的 STL 端口并切换到静态。然后我使用 Application.mk 标志重建静态版本:STLPORT_FORCE_REBUILD := true

但是,我仍然遇到奇怪的问题。它编译一次并安装得很好。然后我做了一个清理并重新编译/部署,它会很好地完成构建,然后告诉我我的应用程序在对话框中有错误但实际上在 Eclipse 中没有。我退出了 eclipse,重新启动它,清理并重建它,现在一切正常。似乎最新的 NDK 存在一些错误/问题......希望在 NDK r7 进行完整的 STL 移植时能够修复异常等。

关于android - 无法链接 libSTLport_shared,即使它存在...?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7456699/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com