【问题标题】:cannot locate symbol "__android_log_write" - Android native logging找不到符号“__android_log_write” - Android 本机日志记录
【发布时间】:2016-10-22 17:06:30
【问题描述】:

我正在尝试将本机代码中的一些信息记录到 logcat 中,但我似乎无法使其正常工作。我已经搜索了整个 stackoverflow(和其他网站)。

在我的本机代码中,我有 #include <android/log.h>。它完全编译没有错误。如果我根本不使用日志记录,我的本机代码会在 android 中运行。

我的 Android.mk:

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)
LOCAL_MODULE := mylib-prebuilt
LOCAL_SRC_FILES := $(TARGET_ARCH_ABI)/mylib.so
LOCAL_EXPORT_C_INCLUDES += $(LOCAL_PATH)/$(TARGET_ARCH_ABI)
LOCAL_LDLIBS := -llog
include $(BUILD_SHARED_LIBRARY)

include $(CLEAR_VARS)
LOCAL_MODULE := gmp-prebuilt
LOCAL_SRC_FILES := $(TARGET_ARCH_ABI)/libgmp.so
LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)/include
include $(BUILD_SHARED_LIBRARY)

我得到的错误:

java.lang.UnsatisfiedLinkError: dlopen failed: cannot locate symbol "__android_log_write" referenced by <package>

最后,我使用的日志是这样的:

__android_log_write(ANDROID_LOG_ERROR, "Native tag", "Native text");

有人知道怎么回事吗?

【问题讨论】:

  • 您添加了#define 吗?喜欢#define LOGE(...) __android_log_print(ANDROID_LOG_ERROR,LOG_TAG,__VA_ARGS__)?
  • 这不会解决任何问题,因为这是一个预处理器宏,实际上会编译成常规的__android_log_write。然而,由于如此绝望,我尝试了它,但没有任何好的结果。

标签: java android c java-native-interface


【解决方案1】:

在链接步骤中尝试-llog。你需要日志库。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-21
    • 2023-04-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多