2011-08-29 12 views
5

私は現在、コンピュータエンジニアリングの最終年度のプロジェクトとしてジャンル分類アプリケーションを作成しています。私は最初にC言語でフィーチャ抽出コード(FFTWの実装)を書いていましたが、NDK経由でAndroidに実装する必要があります。FFTWをAndroid NDKアプリケーションにリンク

これは私の最初のNDKプロジェクトですので、まだ物事のハングを取得していますが、私はthis guideによると、Android用のFFTW3ライブラリをコンパイルしました。私はそれが私が必要なもののために正しいとは思わなかったので、私は最後のステップをしなかった。

私の質問は、コンパイルステップの後に、それを呼び出すメインのNDKアプリケーションでライブラリを使用する方法です。私はちょうど私がコンパイルしたlibfftw3.aにLOCAL_STATIC_LIBRARIESを設定して、Application.mkのすべてを通常どおりにしますか?そして、私は通常どおり-lfftw3リンカフラグを持つ必要はありませんか?

答えて

4

prebuit FFTWライブラリを使用することができます(それをどのように構築したかにかかわらず)。

また、プロジェクト全体でAndroid.mkメイクファイルにFFTWをビルドすることもできます。

Android.mk内容は次のようになります。

# Prebuilt FFTW library 
include $(CLEAR_VARS) 
LOCAL_MODULE := fftw 
include $(PREBUILT_STATIC_LIBRARY) 

# or 

# Build FFTW library 
include $(CLEAR_VARS) 
LOCAL_MODULE := fftw 
# TODO put your static libs build flags 
include path_to_fftw_sources/$(LOCAL_MODULE).mk 
include $(BUILD_STATIC_LIBRARY) 

include $(CLEAR_VARS) 
LOCAL_MODULE := YourProject 
# TODO put your shared lib build flags 
include path_to_your_project/$(LOCAL_MODULE).mk 
LOCAL_STATIC_LIBRARIES += fftw 
include $(BUILD_SHARED_LIBRARY) 

私はあなたの共有ライブラリを構築するためのFFTW静的ライブラリとpath_to_your_project/$(LOCAL_MODULE).mkを構築するためのpath_to_fftw_sources/$(LOCAL_MODULE).mkを書かれています。別の.mkファイルにLOCAL_SRC_FILESLOCAL_C_INCLUDESを入れる方が良い場合があります。

Android.mkファイルについては、docs/ANDROID-MK.htmlのNDKディストリビューションのドキュメントを参照してください。