N-J*_*JOY 0 c++ java-native-interface android android-ndk
我试图在android中包含静态cpp库.这个库已经编译(在mac os上),我有它的包含文件.
这是我的Android.mk档案
LOCAL_PATH := $(call my-dir)
include $(call all-subdir-makefiles)
include $(CLEAR_VARS)
LOCAL_MODULE:= utils
LOCAL_SRC_FILES:= libUtils.a
LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)/utils
include $(PREBUILT_STATIC_LIBRARY)
include $(CLEAR_VARS)
LOCAL_MODULE := sample
LOCAL_SRC_FILES := sample_cpp.cpp
LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)
LOCAL_STATIC_LIBRARIES := utils
LOCAL_LDLIBS := -llog
include $(BUILD_SHARED_LIBRARY)
Run Code Online (Sandbox Code Playgroud)
这是Application.mk文件
APP_STL := stlport_static
APP_CPPFLAGS = -fexceptions
Run Code Online (Sandbox Code Playgroud)
但每当它尝试使用NDK编译它我得到错误
(文件路径)/libUtils.a:文件无法识别:文件格式无法识别collect2:ld返回1退出状态
从评论等等听起来就像你试图使用库的非arm版本.您应该使用ndk构建库.该文档甚至包含有关如何执行此操作的文档.
例如,构建sigc ++可能就像(来自我的项目,其中sigc ++位于sigc ++子目录中)
# SIGC++ Library built as static library
LOCAL_MODULE := sigc
LOCAL_PATH = $(CURRENT_DIR)
LOCAL_CPP_EXTENSION := .cc
LOCAL_SRC_FILES := sigc++/signal.cc sigc++/signal_base.cc sigc++/trackable.cc
LOCAL_SRC_FILES += sigc++/functors/slot_base.cc sigc++/adaptors/lambda/lambda.cc
LOCAL_SRC_FILES += sigc++/connection.cc sigc++/functors/slot.cc
LOCAL_C_INCLUDES := sigc++
include $(BUILD_STATIC_LIBRARY)
Run Code Online (Sandbox Code Playgroud)
但您应该真正了解编译链接的工作原理.我担心使用ndk构建android比使用Xcode或Msvc更低级别.
| 归档时间: |
|
| 查看次数: |
3262 次 |
| 最近记录: |