1

我一直在尝试为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'

如您所见,它抱怨它找不到该功能,并且每个其他功能都会出现错误。

问题是头文件中有许多用于结构和回调的类型定义,但它并没有在包装文件中抱怨它们只是关于函数。

任何帮助表示赞赏。谢谢。

4

0 回答 0