无法链接libstlport_shared,即使它存在...?
Failed to link libstlport_shared, even though it's present...?
我已经准备好开始拼命了。我读了我能找到的关于这个问题的每一个帖子,读了关于这个问题的每一个谷歌结果,什么也找不到。我正在构建一个android应用程序,我在c++中编写了一个2D引擎,我正在使用NDK r6b的stlport共享版本。生成libstlport_shared的。so文件并成功复制到我的libs文件夹中。我甚至检查了在设备上使用adb shell和。so文件被正确复制。
我尝试了各种解决方案,例如修改我的.mk文件来显式声明libstlport_shared。作为必修模块。在编译期间一切都很顺利,它出现在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"代替了我的真实包名,以免泄露我即将推出的游戏的超级秘密。还请注意Ascengine是另一个。SO,我的主要应用程序,这是我的2D引擎。
有人遇到过这样的问题吗?什么好主意吗?还请注意,我对libstlport_shared执行了objdump以检查其深度。我用DDMS确认它们存在于我的设备上,甚至在尝试加载libstlport_shared之前显式地将它们加载到我的java代码中。没有区别。提前感谢!
还这是问题的第二个可选组件。我想到的一个解决方案,但还没有尝试过是使用System.load(absolutepathtollibrary),但我找不到如何在java中生成此路径。出于显而易见的原因,我不想硬编码它。再次感谢!
好吧,看来我找到了解决办法。我基本上放弃了使用stl端口的共享版本,转而使用静态端口。然后使用Application重新构建静态版本。mk flag: STLPORT_FORCE_REBUILD := true
然而,我仍然有奇怪的问题。它编译一次并安装良好。然后我做了一个干净的和重新编译/部署,它会完成构建很好,然后告诉我我的应用程序在对话框中有错误,但实际上不是在eclipse中。我退出eclipse,重新启动它,清理和重建,它现在都工作了。似乎最新的NDK有一些bug/问题…希望在NDK r7中修复,当他们做一个完整的STL端口时,会有异常等
- C++模板来检查友元函数的存在
- 既然存在危险,为什么项目要使用-I include开关
- 我们可以访问一个不存在的联盟的成员吗
- C++:对不存在的命名空间使用命名空间指令
- C++quit()函数中可能存在作用域问题
- C++擦除(如果存在)
- g++ 说函数不存在,即使包含正确的标头
- 这个极客对极客的trie实现是否存在内存泄漏问题
- 有了gcc,是否可以链接库,但前提是它存在
- C++LinkedList问题.数据类型之间存在冲突?没有匹配的构造函数
- gcc和clang在表达式是否为常量求值的问题上存在分歧
- C++Builder中的OnClick事件签名存在问题
- 如何正确地将分支添加到已存在的树中
- 我知道函数调用中存在歧义.有没有办法调用foo()函数
- 如何检查QList中是否存在值
- 根据某个函数是否存在启用模板
- 如何将分支添加到已存在的TTree:ROOT
- 地图计数确实很重要,或者只是检查是否存在
- 通用C++/Python 多语言的存在
- 为什么我的共享库中存在展开符号