从Java

时间:2016-05-17 08:48:27

标签: java c++ java-native-interface g++ shared-libraries

我是使用JNI进行编程的新手,我无法运行我用Java编写的C ++方法。我正在关注this教程。我有一个cpp源文件“cpp.cpp”和一个java文件“Cpp.java”。我遵循的步骤是:

  1. 编写了java代码,声明了本机方法,使用System.loadLibrary("libcpp")创建了一个共享库。
  2. 使用javac Cpp.java编译代码。
  3. 使用javah Cpp创建C ++头文件。
  4. 使用java文件中声明的本机方法编写cpp代码,以及我从内部调用的其他一些方法。
  5. 使用g++ -fPIC -shared cpp.cpp -o libcpp.so编译此代码,并将共享库文件放在同一目录中。
  6. 现在我尝试使用java Cpp运行java代码但是我收到以下错误:

    Exception in thread "main" java.lang.UnsatisfiedLinkError: no libcpp in java.library.path
       at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1867)
       at java.lang.Runtime.loadLibrary0(Runtime.java:870)
       at java.lang.System.loadLibrary(System.java:1122)
       at Cpp.main(Cpp.java:17)
    

    我读了其他问题,但大部分问题都在Windows上运行,我正在使用Ubuntu这样做。请帮助。谢谢你提前。

    以下是目录结构:

    -rw-rw-r-- 1 piyush piyush    450 May 17 11:56 Cpp.h
    -rw-rw-r-- 1 piyush piyush  32624 May 17 12:08 cpp.cpp
    -rwxrwxr-x 1 piyush piyush  31237 May 17 13:38 libcpp.so
    -rw-rw-r-- 1 piyush piyush    831 May 17 14:06 Cpp.java
    -rw-rw-r-- 1 piyush piyush    676 May 17 14:07 Cpp.class
    

0 个答案:

没有答案