Android.mk: 从另一个共享库访问一个共享库中的函数
Android.mk: accessing a function in a shared library from another shared library
我有第一个共享库:
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := one
LOCAL_SRC_FILES := one.cpp
include $(BUILD_SHARED_LIBRARY)
我想从第二个共享库调用第一个共享库中的函数:
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := two
LOCAL_SRC_FILES := two.c
LOCAL_SHARED_LIBRARIES := one
LOCAL_LDLIBS := -llog -landroid -L/path/obj/local/armeabi/ -lone
include $(BUILD_SHARED_LIBRARY)
在第一个共享库中,我有:
nm -D /path/obj/local/armeabi/libone.so | grep \ T
000046cd T _Z13setInputFramePcii
我在第二个共享库中调用与第一个库中定义的相同的函数:
void setInputFrame(char* data, int iWidth, int iHeight);
在链接第二个库时,Eclipse 说找不到函数。知道为什么吗?
出于其他一些原因,我需要将第一个库作为共享(非静态)库。
我正在混合使用 C++ 和 C。添加 extern "C" 解决了问题。
我有第一个共享库:
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := one
LOCAL_SRC_FILES := one.cpp
include $(BUILD_SHARED_LIBRARY)
我想从第二个共享库调用第一个共享库中的函数:
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := two
LOCAL_SRC_FILES := two.c
LOCAL_SHARED_LIBRARIES := one
LOCAL_LDLIBS := -llog -landroid -L/path/obj/local/armeabi/ -lone
include $(BUILD_SHARED_LIBRARY)
在第一个共享库中,我有:
nm -D /path/obj/local/armeabi/libone.so | grep \ T
000046cd T _Z13setInputFramePcii
我在第二个共享库中调用与第一个库中定义的相同的函数:
void setInputFrame(char* data, int iWidth, int iHeight);
在链接第二个库时,Eclipse 说找不到函数。知道为什么吗?
出于其他一些原因,我需要将第一个库作为共享(非静态)库。
我正在混合使用 C++ 和 C。添加 extern "C" 解决了问题。