1

私は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: 関数内 cpSpaceInit:jni/src/cpSpace.c: 103: エラー: '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: 関数内cpSpaceInit:jni/src/cpSpace.c:104: エラー: '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: 関数内 cpSpaceInit:jni/src/cpSpace.c:105: エラー: 'cpBBTreeSetVelocityFunc への未定義の参照'

そのクラスをgrepすると...

~/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)

誰でも助けることができますか?

4

1 に答える 1

2

リンク時に cpBBTree.o が見つからないようです。LOCAL_SRC_FILES に cpBBTree.c がありませんか?

于 2013-01-24T19:21:55.103 に答える