0
  1. Java コードから呼び出そうとする C++ メソッドがあります。
  2. メソッドのシグネチャは次のとおりです。

    • Java :
      public class FLVCamActivity extends Activity {
      static {
            System.loadLibrary("FLVCam");
            System.out.println("読み込まれた FLVCam");
      }
      public native void RunFlvServer(int iCamId);

    • C++ :
      extern "C" JNIEXPORT void JNICALL Java_com_sophin_flvcam_FlvCamActivity_RunFlvServer(JNIEnv* env, jobject javaThis, jint iCamId)

  3. 実行時に System.loadLibrary("FLVCam") は成功しますが、「RunFlvServer」の呼び出しは「ネイティブ Lcom/sofin/flvcam/FLVCamActivity;.RunFlvServer (I)V の実装が見つかりません」で失敗しました。
  4. 私が使用している SDK バージョンは次のとおりです。 AndroidSDK=15、NDK=r7b、minsdk@manifest = 15
  5. 「nm -g」を使用して、ネイティブライブラリによって公開されたすべてのエクスポート エントリを一覧表示すると、ネイティブ メソッドが適切にエクスポートされていることが明らかになります。

    上記を念頭に置いて、なぜこの UnsatisfiedLink 例外が発生するのですか?

ソフィンのナダブ

4

1 に答える 1

0

これは大文字/小文字のようなものでした。FLVCamActivity は大文字に「FLV」を持ち、C++ メソッドには「Flv」(小文字) があります。これでほぼ 1 日を無駄にしました。次回は本当のバグについて。

于 2012-04-23T03:18:30.827 に答える