0

tinyalsa-ndkのソースを使用して tinyalsa lib を構築し、それを JNI 呼び出しでラップしました。コードで使用しようとしています。

Swigを使用して Java ラッパーを生成しました (そして、パッケージに準拠するように出力を変更しました)。ネイティブ メソッドの宣言は次のとおりです。

public final static native long mixer_open(long jarg);

私の JNI ラッパー呼び出しは、ルート パッケージの下のラッパー クラス TinyAlsa.java 内にあります (この例では、com.Example.App を使用します)。

public static SWIGTYPE_p_mixer mixer_open(long card) 
{
    long cPtr = TinyAlsaJNI.mixer_open(card);
    return (cPtr == 0) ? null : new SWIGTYPE_p_mixer(cPtr, false);
}

私のラッパーCメソッドは次のとおりです。

SWIGEXPORT jlong JNICALL Java_com_Example_App_Native_TinyAlsaJNI_mixer_1open(JNIEnv *jenv, jclass jcls, jlong jarg1) 
{
    jlong jresult = 0 ;
    unsigned int arg1 ;
    struct mixer *result = 0 ;

    (void)jenv;
    (void)jcls;
    arg1 = (unsigned int)jarg1; 
    result = (struct mixer *)mixer_open(arg1);
    *(struct mixer **)&jresult = result; 
    return jresult;
}

tinalsa ライブラリは例外なく正常にロードされますが、 などの呼び出しmixer_open(0)は null ポインタを返します。
ただし、コンパイルされた tinymix ミキサーを実行すると、開いているミキサー コントロールが表示されます。
何か不足していますか?コードからどのように機能させることができますか?

4

0 に答える 0