Android NDK和静态库

时间:2011-07-14 16:15:34

标签: android android-ndk

当我打电话给nativ func时,我的应用程序崩溃了。 当我构建我的本机代码时,输​​出为:

StaticLibrary:libstdc ++。a

SharedLibrary:libnsipjni.so

安装:libnsipjni.so =>库/ armabi / libnsipjni.so

为什么不安装静态库?怎么说Android.mk反映了静态库?我应该在我的JAVA代码中加载它吗?

谢谢, 内厄姆

2 个答案:

答案 0 :(得分:0)

您需要先构建静态库,然后添加

LOCAL_STATIC_LIBRARY:= stdc ++

在Android.mk中为sip lib。这将包括共享库中的静态库。

答案 1 :(得分:0)

你能说明到目前为止你得到了什么吗?你在使用方法表吗?

如果没有定义静态库,android.mk上的示例,首先创建一个包含静态库的模块,如果使用stdc ++,则可以跳到make文件的下一部分:

#ARM7
#Include POCO JSON LIBRARIES: libPocoJSON.a using the headers in ../JSON/include
include $(CLEAR_VARS)
#LOCAL_ARM_MODE := arm
LOCAL_MODULE := PocoJSONArm7
LOCAL_SRC_FILES := Poco/arm7/libPocoJSON.a 
LOCAL_EXPORT_C_INCLUDES :=/Users/exjobb/poco-1.5.1-all/JSON/include
LOCAL_EXPORT_CFLAGS := -DFOO=1 -fpermissive -O3
LOCAL_EXPORT_LDLIBS := -llog
include $(PREBUILT_STATIC_LIBRARY)

接下来导入此模块:

# make file for compiling your c++ code to shared library here....

# Add the static libraries
#LOCAL_WHOLE_STATIC_LIBRARIES :=PocoJSONArm7 <- Your library is in stdc++
LOCAL_STATIC_LIBRARY := stdc++ # <- This is where you load your library

LOCAL_LDLIBS     := -llog
LOCAL_CFLAGS     := -O3 -DPOCO_ANDROID -DPOCO_NO_FPENVIRONMENT -DPOCO_NO_WSTRING -DPOCO_NO_SHAREDMEMORY
LOCAL_CPPFLAGS   := -frtti -fexceptions -O3

include $(BUILD_SHARED_LIBRARY)