编译 CPP 文件的时候遇到个问题,特来请教。写了个简单的例子,用到的文件分别如下:
test.cpp 文件:#include "add.h"void my_test()
{
    my_add(1, 2);
}
add.cpp文件:int my_add(int x, int y)
{
    int sum = x + y;    return sum;
}
add.h文件:#ifdef __cplusplus
extern "C"
{
#endifint my_add(int x, int y);#ifdef __cplusplus
}
#endif
Android.mk文件:LOCAL_PATH:=$(call my-dir)include $(CLEAR_VARS)
LOCAL_SRC_FILES:= add.cpp
LOCAL_MODULE:=libadd
LOCAL_PRELINK_MODULE := false
include $(BUILD_STATIC_LIBRARY)include $(CLEAR_VARS)
LOCAL_SRC_FILES:=test.cpp
LOCAL_MODULE:=test
LOCAL_STATIC_LIBRARIES:=libadd
include $(BUILD_SHARED_LIBRARY)
Application.mk文件:APP_ABI := armeabi
编译时提示错误:./obj/local/armeabi/objs/test/test.o: In function `my_test()':
/home/firstime/lib_test/jni/test.cpp:5: undefined reference to `my_add'
collect2: ld returned 1 exit status
make: *** [obj/local/armeabi/libtest.so] Error 1
我用 readelf -s 命令查看了编译出来的 libadd.a,发现函数 my_test() 的名字被编译成了 _Z6my_addii。请问怎么办?