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 functionについて読んでください。

ジャワ:

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 に答える