Android アプリケーションで使用するngspiceシミュレーション ライブラリの共有オブジェクトを構築しようとしましたが、ndk-build を使用して共有オブジェクトを作成できましたが、SWIG によって作成されたラッパー ファイルをソースとして追加しない場合のみです。 Android.mk のファイル。
問題は、Android.mk のビルド時にエラーが発生することです。
SWIG インターフェイス ファイルの内容は次のとおりです。
%module NGSpiceModule
%{
/* Includes the header in the wrapper code */
#include "include/ngspice/sharedspice.h"
%}
/* Parse the header file to generate wrappers */
%include "include/ngspice/sharedspice.h"
そして、これがヘッダーファイルです ( sharedspice.h )
コマンドを使用してラッパー ファイルを作成する場合:
swig -java -package package_name -outdir src/java_classes_path -o jni/ngspicemodule_wrap.c jni/ngspicemodule.i
ヘッダー ファイルの内容全体をインターフェイスする長いファイル ( ngspicemodule_wrap.c ) を取得します。
Android.mk ファイルの内容:
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := NGSpiceModule
LOCAL_SRC_FILES := \
ngspicemodule_wrap.c \
.
.
...rest of the source files
include $(BUILD_SHARED_LIBRARY)
次を使用して Android.mk ファイルをビルドしようとすると:
ndk-build v=1
次のエラーが表示されます。
./obj/local/armeabi/objs/NGSpiceModule/ngspicemodule_wrap.o: In function `Java_packageName_NGSpiceModuleJNI_ngSpice_1Init':projectPath/jni/ngspicemodule_wrap.c:1197: undefined reference to `ngSpice_Init'
ご覧のとおり、関数が見つからないと不平を言っており、他のすべての関数でエラーが表示されます。
問題は、ヘッダー ファイルに構造体とコールバックの多くの typedef があることですが、関数についてのみラッパー ファイルでそれらについて不平を言っているわけではありません。
どんな助けでも大歓迎です。ありがとう。