在java中使用C++库

sat*_*230 5 c++ java static-libraries

我是这个论坛的新手,所以如果我不能以正确的方式提出我的问题,请原谅.

我想要帮助使用C++(.lib and.h)文件java.
我想.lib在我的java代码中使用该文件的方法.

功能原型如:

FunctionXYZ(BYTE *Data1, BYTE *Data2, BYTE *Data3, int Data4);
Run Code Online (Sandbox Code Playgroud)

我将使用的环境是centOS.

先感谢您

PS:我没有这个.lib的源代码

max*_*dev 6

要使用a中的函数.lib,您必须为这些库函数创建JNI包装函数,然后将它们与库链接到一起.dll.

例:

  1. 假设您的C++库头中有一个带有此签名的函数:

    int example(int a, int b);
    
    Run Code Online (Sandbox Code Playgroud)
  2. 用C++创建一个函数包装器:

    JNIEXPORT jint JNICALL Java_MyClass_example (JNIEnv* env, jobject obj, jint a, jint b) {
        return (jint) example(a, b);
    }
    
    Run Code Online (Sandbox Code Playgroud)
  3. 将库和包装器链接到DLL中

  4. 使用本机方法创建Java类:

    public class MyClass {
        public native int example(int a, int b);
    }
    
    Run Code Online (Sandbox Code Playgroud)
  5. 使用System.loadLibrary函数(或类似)加载DLL

  6. 现在你可以example在一个对象上调用该方法了MyClass