このコードがあるとしましょう:
print.cpp
int print ()
{
return 10;
}
print.h
#ifndef PRINT_H
#define PRINT_H
int print(); // function prototype for add.h
#endif
ライブラリ呼び出しlibTest.aにコンパイルしました
今、私はこの android.mk ファイルを持っているとしましょう
include $(CLEAR_VARS)
LOCAL_MODULE := libtest
LOCAL_SRC_FILES := ../issmlib/libTest.a
LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)/../include
include $(PREBUILT_STATIC_LIBRARY)
もちろん、共有のようなものは他にもありますが、それらはすべて正常に動作すると仮定します!!! 私は libTest.a を issmlib というフォルダーに入れました。これはプロジェクトの jni フォルダーと同じレベルにあり、print.h を include というフォルダーに入れました。
これが私のメインです:
#include "com_lan_factorial_FacLib.h"
#include "fac.h"
//extern long fac(long n);
JNIEXPORT jlong JNICALL Java_com_lan_factorial_FacLib_fac(JNIEnv *env, jclass clazz, jlong n)
{
fac *f = new fac();
jlong result = (jlong) (f->factorial(n));
delete(f);
return result + print();
}
そのため、結果を計算し、それに 10 を加算します。そのビルド済みライブラリの使用方法がわかりません。#include "print.h" を指定する必要がありますか? 取り出すと、print() が宣言されていないと文句を言います。
これは C++ に関する質問ですが、お役に立てれば幸いです。
私の Android.mk へのパスは問題ないと思いますが、おかしなところを見つけたら教えてください。どうもありがとう。