2016-04-18 12 views
1

新しいアンドロイドスタジオプロジェクトにスーパーコンピューティングライブラリを追加しようとしましたが、Androidのサンプルに従っていますが、リンクライブラリにはまだ問題があります。スーパーコンピューティングライブラリのリンクが機能しない

私はこのエラーを持っている:

java.lang.UnsatisfiedLinkError: No implementation found for void com.xxx.audiomixprototype.MainActivity.AudioMixPrototype(java.lang.String, long[]) (tried Java_com_xxx_audiomixprototype_MainActivity_AudioMixPrototype and Java_com_xxx_audiomixprototype_MainActivity_AudioMixPrototype__Ljava_lang_String_2_3J)

私はSuperpowered githubののreadme https://github.com/superpoweredSDK/Low-Latency-Android-Audio-iOS-Audio-Engine

から短いチュートリアルに従うと、すべてが明確であるが、私は最後のポイントを理解していない:

create your custom .cpp and .h files, then donÕt forget to properly set LOCAL_MODULE and LOCAL_SRC_FILES in Android.mk

おそらくこれが私がこのライブラリを正しくリンクできない理由です。 LOCAL_MODULEとLOCAL_SRC_FILESを正しく設定する方法は?

+0

エラーメッセージは不完全です。それはあなたにそれが一致しようとしていた完全なメソッドの署名を与えていたはずです。投稿をフルラインで更新できますか? – zenzelezz

答えて

0

私は解決策を見つけました。 SuperpoweredExample.cppファイルをコピーすると、このファイルのJNIEXPORTは変更されませんでした。

私はこれがあります。

JNIEXPORT void Java_com_superpowered_crossexample_MainActivity_SuperpoweredExample(JNIEnv *javaEnvironment, jobject self, jstring apkPath, jlongArray offsetAndLength); 

をする代わりに、この:

JNIEXPORT void Java_com_xxx_audiomixprototype_MainActivity_SuperpoweredExample(JNIEnv *javaEnvironment, jobject self, jstring apkPath, jlongArray offsetAndLength); 

私は愚かな間違いを知っているが、多分他の誰かが同じ問題を抱えているだろう。

1

私はここでいくつかの推測をしていますので、私はあなたのプロジェクトに関する私の仮定を概説します。

1)あなたはラインでJavaファイルがあります:あなたの避難所「の場合あなたはSRC /メイン/ JNI/filename.cpp

にこのメソッドのJNI実装を持っている)

private native void AudioMixPrototype(String apkPath, long[] offsetAndLength); 

2あなたのAndroid.mkにLOCAL_MODULEとLOCAL_SRC_FILESを正しく設定すると、JavaはこのメソッドへのJNI呼び出しを解決できず、リンクエラーになります。あなたのAndroid.mkに以下を追加する必要があります:

include $(CLEAR_VARS) 

# name your JNI module 
LOCAL_MODULE := audio-mix-prototype 

# assuming your Android.mk is also in src/main/jni, 
# provide the filename to the JNI implementation of your method 
LOCAL_SRC_FILES := filename.cpp 

# add your flags, other libraries, etc. here 

include $(BUILD_SHARED_LIBRARY) 

Superpowered SDKにはいくつかの良い例があります。 Superpowered hereに応じて、プロジェクトのAndroid.mkファイルの例を見ることができます。

+0

私は "クロスサンプル"の例と同じコードで新しいプロジェクトを作成しますが、まだこの問題があります。 私のAndroid.mkファイルは同じですが、私はSuperpoweredへのパスのみを変更します。 – MaSza

+0

私のAndroid.mkファイルは同じですが、私はSuperpoweredとLOCAL_SRC_FILESのパスを変更します。SuperpoweredExample.cppとSuperpoweredAndroidAudioIO.cppに直接パスを追加します – MaSza

+0

Javaからネイティブライブラリをどのようにロードしていますか? –

関連する問題