我一直在尝试为ngspice模拟库构建一个共享对象,以便在 android 应用程序中使用,我能够使用 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'
如您所见,它抱怨它找不到该功能,并且每个其他功能都会出现错误。
问题是头文件中有许多用于结构和回调的类型定义,但它并没有在包装文件中抱怨它们只是关于函数。
任何帮助表示赞赏。谢谢。