我已经用C语言编写一些代码,我想从Java调用从Java调用的函数℃。我所做的是我有一个函数在我的c代码中调用另一个c函数从libspotify我试图写一个Java包装使用JNA调用我的c函数。试图使用JNA
我写了一个简单的登录功能,在C Spotify的这实际上是工作。下面是将c文件的链接,其具有的方法
https://github.com/shroffrushabh/libspotify_java/blob/master/jukebox.c
下一步我之后,而不是使用在libspotify实施例中提供的补充文件,我使用了以下cmd以编译和创建。因此文件
gcc -o libspot.so -shared jukebox.c appkey.c
这是我的java文件的样子
import com.sun.jna.Library;
import com.sun.jna.Native;
public class SpotifyTest {
public interface JukeBox extends Library {
public int login();
}
static public void main(String argv[]) {
JukeBox jk = (JukeBox) Native.loadLibrary("spot", JukeBox.class);
jk.login();
}
}
以下是编译和运行JA的命令VA文件
javac -classpath jna-4.0.0.jar SpotifyTest.java
java -classpath jna-4.0.0.jar:. SpotifyTest
以下是例外,我得到:
java.lang.UnsatisfiedLinkError: /home/rushabh/libctest.so: undefined symbol: sp_session_create
我不知道是怎么回事错在这里,但这里是我在想什么,有在libspotify一个sp_session_create功能( C API),我正在调用我的C代码,所以我想我需要以某种方式链接libspotify库,当我试图生成我的.so文件。这将是巨大的,如果你能给我如何解决这个问题
的gcc -o libspot.so -L〜/下载/ libspotify - 51年1月12日,Linux的的i686-release/lib目录/ -L在/ usr /本地/ lib目录/ -I〜/下载/ libspotify - 51年1月12日,Linux的i686的释放/包括/ libspotify/-shared jukebox.c appkey.c – user1386101
我试着用上面的命令,但它仍然没有工作。 – user1386101
你需要在'-Wl,-rpath,$ HOME /下载/ libspotify-12.151-Linux的i686的发布版/ lib'以及传递的,所以'libspot.so'知道如何寻找那里的图书馆。由于评估规则非常有限,我倾向于不在路径名中使用'〜' – Petesh