linux java 呼叫c++ 動態庫
1,準備工作,下載jna.jar, 這是動態庫依賴的jar包
wget http://repo1.maven.org/maven2/net/java/dev/jna/jna/4.5.2/jna-4.5.2.jar
如果沒有javac,需要自己安裝,請執行
sudo yum -y install java-1.7.0-openjdk-devel.x86_64
2,
a) 編譯c code成為動態庫
g++ -fpic -shared -o libtest.so test.cpp
b)編譯java
javac -classpath jna-4.5.2.jar jnatest1.java
c)執行java
java -classpath .:jna-4.5.2.jar jnatest1
3,源code
test.cpp
using namespace std;
extern "C"
{
void test() {
cout << "TEST" << endl;
}
int addTest(int a,int b)
{
int c = a + b ;
return c ;
}
}
檔案:jnatest1.java
import com.sun.jna.Library;
import com.sun.jna.Native;
public class jnatest1 {
public interface Clibrary extends Library {
Clibrary INSTANTCE = (Clibrary) Native.loadLibrary("test",
Clibrary.class);
void test();
int addTest(int a,int b);
}
public static void main(String[] args) {
Clibrary.INSTANTCE.test();
int c = Clibrary.INSTANTCE.addTest(10,20);
System.out.println(c);
}
}