C NDK ndk-build 无法识别 header 错误 : undefined reference to 'cpBBTreeNew'

标签 c android-ndk chipmunk

我对C比较陌生

我正在努力将 Chipmunk 物理引擎移植到我的项目中,但是,当我尝试运行 ndk-build 时,我得到以下...

/Users/user/Development/Android/android-ndk-r8c/toolchains/arm-linux-androideabi-4.6/prebuilt/darwin-x86/bin/../lib/gcc/arm-linux-androideabi/4.6/../../../../arm-linux-androideabi/bin/ld: ./obj/local/armeabi/objs/chipmunk_shared/src/cpSpace.o: in function cpSpaceInit:jni/src/cpSpace.c:103: error: undefined reference to 'cpBBTreeNew' /Users/user/Development/Android/android-ndk-r8c/toolchains/arm-linux-androideabi-4.6/prebuilt/darwin-x86/bin/../lib/gcc/arm-linux-androideabi/4.6/../../../../arm-linux-androideabi/bin/ld: ./obj/local/armeabi/objs/chipmunk_shared/src/cpSpace.o: in function cpSpaceInit:jni/src/cpSpace.c:104: error: undefined reference to 'cpBBTreeNew' /Users/user/Development/Android/android-ndk-r8c/toolchains/arm-linux-androideabi-4.6/prebuilt/darwin-x86/bin/../lib/gcc/arm-linux-androideabi/4.6/../../../../arm-linux-androideabi/bin/ld: ./obj/local/armeabi/objs/chipmunk_shared/src/cpSpace.o: in function cpSpaceInit:jni/src/cpSpace.c:105: error: undefined reference to 'cpBBTreeSetVelocityFunc'

当我为那个类搜索时,我看到...

~/Documents/workspace/Chipmunk$ grep -r cpBBTreeNew jni/ jni//include/chipmunk/cpSpatialIndex.h:cpSpatialIndex* cpBBTreeNew(cpSpatialIndexBBFunc bbfunc, cpSpatialIndex *staticIndex); jni//src/cpBBTree.c:cpBBTreeNew(cpSpatialIndexBBFunc bbfunc, cpSpatialIndex *staticIndex) jni//src/cpSpace.c: space->staticShapes = cpBBTreeNew((cpSpatialIndexBBFunc)cpShapeGetBB, NULL); jni//src/cpSpace.c: space->activeShapes = cpBBTreeNew((cpSpatialIndexBBFunc)cpShapeGetBB, space->staticShapes);

所以我知道 .h 文件在那里,我确认它是通过另一个 .h 类加载的。我不认为这是问题所在,但这是我的 Android.mk...

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)

LOCAL_MODULE := chipmunk_shared

LOCAL_MODULE_FILENAME := libchipmunk

LOCAL_SRC_FILES := \
src/chipmunk.c \
....
src/cpVect.c

LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)/include/chipmunk

LOCAL_C_INCLUDES := $(LOCAL_PATH)/include/chipmunk
LOCAL_CFLAGS := -std=c99

include $(BUILD_SHARED_LIBRARY)

########### Static library

include $(CLEAR_VARS)

LOCAL_MODULE := chipmunk_static

LOCAL_MODULE_FILENAME := libchipmunk

LOCAL_SRC_FILES := \
src/chipmunk.c \
....
src/cpVect.c

LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)/include/chipmunk

LOCAL_C_INCLUDES := $(LOCAL_PATH)/include/chipmunk
LOCAL_CFLAGS := -std=c99

include $(BUILD_STATIC_LIBRARY)

有人能帮忙吗?

最佳答案

听起来像是链接时缺少 cpBBTree.o。 LOCAL_SRC_FILES 中是否缺少 cpBBTree.c?

关于C NDK ndk-build 无法识别 header 错误 : undefined reference to 'cpBBTreeNew' ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14504763/

相关文章:

python - 具有相同初始条件的混沌摆表现出混沌行为

javascript - 与 Chipmunk JS 的碰撞失败

iphone - 如何检测堆栈对象掉落

C- For 循环 gcc 中的 int 第一个声明

c++ - ARCore NDK Pose 的 Matrix4x4 格式是什么?

c - PRO*C编译错误注释

android - 语句无效 'AVPacket'

android - android应用程序如何使用用户制作的库?

c - 4 维数组的指针语法

C: 无法接收指向结构数组的指针