Android.mk: доступ к функции в общей библиотеке из другой общей библиотеки

У меня есть первая общая библиотека:

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 сообщает, что не может найти функцию. Есть идеи, почему?

По некоторым другим причинам мне нужно, чтобы первая библиотека была общей (не статической).


person gregoiregentil    schedule 29.04.2015    source источник


Ответы (1)


Я смешивал C++ и C. Добавление extern "C" устраняет проблему.

person gregoiregentil    schedule 29.04.2015