对SWIG包装器文件中的`(function_name)'的ndk未定义引用

时间:2013-10-16 17:16:10

标签: android c android-ndk swig

我一直在尝试为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,但它并没有在包装文件中抱怨它们只是关于函数。

感谢任何帮助。感谢。

0 个答案:

没有答案