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);
        }
}
 


 

猜你喜欢

转载自blog.csdn.net/pku1254/article/details/81070593