使用NDK开发原生音频采集播放库(包含音频处理算法),在编写的c++文件中,引用了android os中的源码AudioTrack.h的功能。编成的原生库,在Eclipse java工程里通过system.loadLibrary("audiocodec")来调用,编译都正常,但在模拟器上运行,却显示异常退出。但把c++源码中对AudioTrack.h中方法的引用去除,就能加载成功。难道是对系统库的应用造成的问题,改如何解决呢?

解决方案 »

  1.   

    运行时,显示的异常信息是什么?是找不到lib吗?
      

  2.   

    错误如下02-26 10:24:48.670: INFO/dalvikvm(341): Unable to dlopen(/data/data/com.hangzhou.android.abc/lib/libaudiovideo.so): Cannot load library: link_image[1995]: failed to link libaudiovideo.so
      

  3.   

    我也尝试这将libaudiovideo.so使用adb push libaudiovideo.so /system/lib下,还是没有用。
    在模拟器上运行systemlibrary(“audiovideo”)后,模拟器显示:the application has stopped unexpectedly.
      

  4.   

    Unable to dlopen(/data/data/com.hangzhou.android.abc/lib/libaudiovideo.so): Cannot load library: link_image[1995]: failed to link libaudiovideo.so你文件存在? 是否so库不支持啊? so要在android上重新编译的,或者版本不对,arm/x86/mips 质量架构要看好
      

  5.   

    我自己解答下吧!在make文件里包含了os中的libmedia.so等库,但没有将这些库通过-lmedia指定进来,只包含了头文件。将模拟器上的这些系统库文件导出,一起编译,就解决了。初学者,还请各位指教一二~
      

  6.   

    我的也是这样子,在ubuntu上C++代码编译好成so文件后拷到windows下的项目中去,导进工程中,一跑就是The application XXX(项目名)has stopped unexpectedly.Please try again.以为是代码有问题,后来用官方NDK中的例子程序拿到windows下一跑,还是这个问题,所以很纠结啊