小编Bee*_*eeo的帖子

SWIG接口通过函数参数在Java中接收不透明的结构引用

我正在尝试使用SWIG以便为Android使用Spotify API(libspotify):https: //developer.spotify.com/technologies/libspotify/

我无法定义SWIG接口文件以便能够成功调用以下本机C函数:

sp_error sp_session_create(const sp_session_config * config, sp_session ** sess);
Run Code Online (Sandbox Code Playgroud)

在C中将被称为这样:

//config struct defined previously
sp_session *sess;
sp_session_create(&config, &sess);
Run Code Online (Sandbox Code Playgroud)

但在Java中我需要这样称呼它:

//config object defined previously
sp_session javaSess = new sp_session();
sp_session_create(config, javaSess);
Run Code Online (Sandbox Code Playgroud)

sp_session是一个不透明的结构,只在libspotify的API.h文件中定义为:

typedef struct sp_session sp_session;
Run Code Online (Sandbox Code Playgroud)

我期待libspotify库创建它并给我一个引用.那时我唯一需要引用的是传递给API中的其他函数.

我相信答案在于SWIG界面和类型地图,但我尝试应用我在文档中找到示例时未能成功.

java swig spotify

7
推荐指数
1
解决办法
1160
查看次数

标签 统计

java ×1

spotify ×1

swig ×1