0

我擅长 c#,我需要 JAVA 帮助。

我有一个输出 4 个变量的 c++ 函数

int Func1(int inParam1, unsigned char* inParam2, int *outParam1, int *outParam2, int *outParam3, unsigned char** outParam4);

我可以像这样使用 PInvoke 从 C# 调用这个函数

[DllImport("CLSFPCaptureDLL.dll"]
       int Func1(int inParam1, byte[] inParam2, out IntPtr outParam1, out IntPtr outParam2, out IntPtr outParam3, out IntPtr outParam4);

但现在我需要在 java 中调用 c++ 函数。我编写了一个带有需要输出这 4 个变量的 java 类的 JNI。我怎样才能在 JAVA 中做到这一点?

4

1 回答 1

2

你需要一个 c++ 中的桥梁。

请务必阅读有关JNI的内容,以便更好地遵循我的示例。

在 C++ 中,创建一个类并将其编译为 dll,以便它找到并链接到 CLSFPCaptureDLL.dll。阅读JNI 函数,这将帮助您构建输出。

爪哇:

Test1.java:

package test;

public class Test1 {

    static {
        System.loadLibrary("YourLibrary");
    }

    public static byte[] myJniFunc();
}

和 C++:

Test.cpp:

extern "C"
{
    JNIEXPORT jobject JNICALL Java_test_Test1_myJniFunc(JNIEnv *env, jclass cls)
    {
        // Make all the data you need, and pass it back as a jbyteArray
    }
}
于 2013-02-08T14:19:38.187 回答