1

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 があることですが、関数についてのみラッパー ファイルでそれらについて不平を言っているわけではありません。

どんな助けでも大歓迎です。ありがとう。

4

0 に答える 0