0

在本教程http://audioprograming.wordpress.com/2012/03/03/android-audio-streaming-with-opensl-es-and-的帮助下,我成功构建了一个使用 Android 中的 OpenSL 库的 Android NDK 应用程序 -ndk/

在 opensl_io.h 中说明了以下内容:

#include <SLES/OpenSLES.h>
#include <SLES/OpenSLES_Android.h>

我想知道这是否会影响我的设备上的库/system/lib/libOpenSLES.so已加载。

我认为必须在某个时候加载该库,因为在 Android.mk 中有说明

LOCAL_LDLIBS := -llog -lOpenSLES

ndk 文档告诉我,这意味着/system/lib/libOpenSLES.so而不是任何其他用于-lOpenSLES

所以我编写了一个具有超级用户权限的应用程序,该应用程序在该文件上有一个 FileWatcher。

但是,当我使用我的 OpenSL 示例时,似乎从未触及过该库。

对于其他库,例如/system/lib/libstdc++.so,我可以通过 FileWatcher 看到它们已加载。

所以我的问题是:为什么/system/lib/libOpenSLES.so不使用?

4

2 回答 2

0

你得到什么错误?我在创建音频应用程序时调用这些库时遇到问题。问题是在我的 java 包装文件中我没有加载库。应使用以下代码将库加载到 java 类中

static{
        System.loadLibrary("com_example_packageName");
    }

packageName 应该是您的应用程序包名称。

于 2014-04-03T17:25:07.613 回答
0

仅添加-lOpenSLES#include指令以使您的代码实际链接到libOpenSLES.so是不够的。如果您从该库调用单个函数就足够了,即使在这样的调用中也永远不会执行(注意不要将它放在优化编译器将完全丢弃的块中)。

于 2014-03-29T21:20:20.717 回答