无法从C 代码访问C共享库方法

Cannot access C shared library methods from C++ code

本文关键字:共享 方法 访问 代码      更新时间:2023-10-16

我正在尝试在我的C 代码中包括一个C库。

C代码已编译到C库中。C部分在下面:

这是c组件的android.mk文件:

LOCAL_PATH:= $(call my-dir)
    include $(CLEAR_VARS)
    LOCAL_SRC_FILES:= logger.c
    LOCAL_C_INCLUDES += $(LOCAL_PATH)
    LOCAL_CFLAGS += -Wall -Wno-unused-parameter -std=gnu99
    LOCAL_SHARED_LIBRARIES := libcutils libsysutils
    LOCAL_LDLIBS := -llog
    LOCAL_MODULE_OWNER := company_name
    LOCAL_PROPRIETARY_MODULE := true
    LOCAL_MODULE := liblogger
    LOCAL_MODULE_SUFFIX := .so
    LOCAL_MODULE_TAGS := optional
    include $(BUILD_SHARED_LIBRARY)

C层的标题文件(C_Logger.h(如下:

#if defined (__cplusplus)
extern "C" {
#endif // __cplusplus
int     logger_init ();
#if defined (__cplusplus)
}
#endif // __cplusplus

logger.c实现如下:

int combilog_init ()
{
    // logic
    return 0;
}

我是我的cpp代码,android.mk,我在" local_shared_libraries"中包含了此C库:

LOCAL_SHARED_LIBRARIES := liblogger

然后,我正在用CPP代码访问它:

int ret = init();

编译时,我看到以下错误:

In file included from xxxx/Logger.cpp:20:
XXXX/CPP_Logger.h:26:10: fatal error: 'c_logger.h' file not found

这里的任何帮助将不胜感激。

您仍然需要包括匹配.h,因此编译器识别您的init函数