哪个库包含pulseaudio pa_simple_new函数

时间:2015-09-18 19:41:29

标签: java-native-interface shared-libraries pulseaudio

我正在编写一个java应用程序。这是一个MP3播放器。我想使用pulseaudio服务器,因为我的蓝牙音箱可以通过pulseaudio访问。

我使用简单的pulseaudio接口编写了一个共享库。

现在我收到了错误

/home/rainer/NetBeansProjects/audioserver/src/main/native/audioserver.so:undefined symbol:pa_simple_new

我必须将哪个库添加到我的java程序才能访问符号pa_simple_new?

1 个答案:

答案 0 :(得分:1)

搜索后,我发现libpulse-simple.so库包含了这些函数。执行时显示

nm -D libpulse-simple.so

我无法直接调用这些函数,因为我在JNI环境中调用了这些函数。

我必须使用函数dlopen和dlsym来访问函数:

void* h = dlopen("libpulse-simple.so", RTLD_LAZY|RTLD_GLOBAL);

  ptr_pa_simple_new = (pa_simple* (*)(const char *,const char *,pa_stream_direction_t,const char *,const char *,const pa_sample_spec *,const pa_channel_map *,const pa_buffer_attr *,int *))dlsym(h,"pa_simple_new");
  ptr_pa_simple_free = (void (*)(pa_simple *))dlsym(h,"pa_simple_free");
  ptr_pa_simple_write = (int (*)(pa_simple *, const void *, size_t, int *))dlsym(h,"pa_simple_write");