链接c++静态库与android ndk时出错(错误:无法识别文件格式)
Error in linking C++ static library with android ndk(Error: file format not recognized)
我正在尝试在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)
这里是Application.mk
文件
APP_STL := stlport_static
APP_CPPFLAGS = -fexceptions
但是当它尝试使用NDK编译它时,我得到错误
(文件路径)/libUtils。a: file not recognized:文件格式不识别
从评论等来看,听起来您试图使用非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)
但是您应该真正阅读编译链接是如何工作的。我担心用ndk为android构建比使用Xcode或Msvc更低级。
相关文章:
- C++出现控制台错误.我无法识别源代码的问题
- C++ 编译错误:gnu_printf是无法识别的格式函数类型
- 哗啦��错误:无法识别任何一组可以驱动指定关节的控制器
- GCC-7:错误:无法识别的命令行选项"-M64"
- C ++中的函数为什么我的编译器无法识别错误()
- OPENCV错误在XCode 8中加载Fisher面部识别器时
- 如何修复 Typedef 变量未识别错误 C++ (Visual Studio 2017)
- if 语句错误地识别括号中的空格
- 无法识别的模板声明错误 - 不明白我做错了什么
- 需要帮助识别简单多线程代码中的错误
- 识别指针处理方式中的错误
- 将“getopt_long”与无法识别的长选项一起使用时出现分段错误
- Windows Web Services框架中发生了无法识别的错误
- QT5对QinputDialog和Qmessagebox的未识别引用.错误
- 插入protobuf时SQLite无法识别的令牌错误:要处理哪些令牌以及如何处理?
- GDB错误不以可执行格式:未识别的文件格式
- C++错误,编译器将无法识别字符串::p ush_back
- 错误:生成Mesos中无法识别的命令行选项"-Wno无效源编码"[-Weror]
- 声明cudaError_t变量时出现无法识别的令牌错误
- 英特尔集成显卡错误识别 (DXGI)