Java에서 호출하려는 C 코드를 작성했습니다. 내가 한 일은 libspotify에서 또 다른 c 함수를 호출하는 내 C 코드에 함수가 있고 JNA를 사용하여 Java Wrapper를 작성하여 C 함수를 호출하려고하는 것입니다.JNA를 사용하여 Java에서 C에서 함수를 호출하려고 시도했습니다.
실제로 작동중인 c에서 spotify에 대한 간단한 로그인 기능을 작성했습니다. 여기에있어서
https://github.com/shroffrushabh/libspotify_java/blob/master/jukebox.c
에게 I 사용 I 대신 libspotify 예에서 제공되는 화장 파일을 사용한다이어서 다음 단계를 갖는다 C 파일에 대한 링크가 다음 컴파일하고을 생성하고 cmd. 그래서 다음
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을 실행할 수있는 명령처럼 내 자바 파일이 보이는 것을 이것은
gcc -o libspot.so -shared jukebox.c appkey.c
파일 libspotify에서 sp_session_create 기능을합니다 (이, 내가 잘못 여기에 무슨 일이 일어나고 있는지 확실하지 않다
java.lang.UnsatisfiedLinkError: /home/rushabh/libctest.so: undefined symbol: sp_session_create
하지만, 여기에 내가 생각하고 무엇을 :
javac -classpath jna-4.0.0.jar SpotifyTest.java
java -classpath jna-4.0.0.jar:. SpotifyTest
다음 VA 파일은 내가 얻을 예외 C 코드에서 부르는 C API). 그래서 .so 파일을 생성하려고 할 때 libspotify 라이브러리를 어떻게 든 연결해야한다고 생각합니다. 이 문제를 해결하는 방법에 대한 제안을하면 도움이 될 것입니다.
의 gcc -o libspot.so -L ~/다운로드/libspotify - 12.1.51 - 리눅스는 i686 출시/lib 디렉토리/-L/usr/지방 당신에게 에릭 로버트슨과 Petesh 감사/lib/-I ~/Downloads/libspotify-12.1.51-Linux-i686-release/include/libspotify/-shared jukebox.c appkey.c – user1386101
위의 명령을 사용해 보았지만 여전히 작동하지 않습니다. – user1386101
'-Wl, -rpath, $ HOME/Downloads/libspotify-12.151-Linux-i686-releases/lib'도 전달해야하므로'libspot.so'는 라이브러리를 찾을 것입니다. 나는 평가 룰이 매우 제한되어 있기 때문에 경로 이름에'~'를 쓰지 않는 경향이있다. – Petesh