我一直在尝试为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'
正如您所看到的那样抱怨它无法找到该功能,并且每个其他功能都会出现错误。
问题是在头文件中有很多用于结构和回调的typedef,但它并没有在包装文件中抱怨它们只是关于函数。
感谢任何帮助。感谢。