cocos2d-x在Cygwin上编译Android用库文件时遇到的Box2D问题

来源:互联网 发布:ipython notebook mac 编辑:程序博客网 时间:2024/05/21 06:45

最近想开发一个类似《老爸曾是贼》的益智小游戏,我的开发流程是

1,VC2010上编写Win32版本用于调试

2,使用Cygwin编译

3,使用Eclipse发布apk

在写完玩法演示Demo的win32版本后,使用Cygwin编译时,遇到了问题:找不到Box2D的头文件。

上网看了一些帖子,没受到什么启发,只好自己研究。

后来认真的阅读了cocos2d-x2.1.14提供的范例,知道了问题的原因。现整理如下:

1,首先,我们来看使用create-android-project.bat创建的默认工程jni目录下的Android.mk文件


注意下列文本:

LOCAL_WHOLE_STATIC_LIBRARIES := cocos2dx_static cocosdenshion_static cocos_extension_static
            
include $(BUILD_SHARED_LIBRARY)


$(call import-module,CocosDenshion/android) \
$(call import-module,cocos2dx) \
$(call import-module,extensions)

我们看到了,工程引用了"cocos2dx_static" (cocos基础库)"cocosdenshion_static“(音效库) ”cocos_extension_static“(ext拓展库)

默认创建的工程并没有引用Box2D库,这就是为什么在Cygwin上编译找不到Box2D头文件的问题。


本着cocos开发有问题找Tests的精神,我查看了 samples/Cpp/TesCpp/proj.android/jni/Android.mk文件

发现如下文本

LOCAL_WHOLE_STATIC_LIBRARIES := cocos_testcpp_common(作者把Tests里的演示都封装在这个库里)
LOCAL_WHOLE_STATIC_LIBRARIES += cocos2dx_static
LOCAL_WHOLE_STATIC_LIBRARIES += cocosdenshion_static
LOCAL_WHOLE_STATIC_LIBRARIES += box2d_static
LOCAL_WHOLE_STATIC_LIBRARIES += chipmunk_static
LOCAL_WHOLE_STATIC_LIBRARIES += cocos_extension_static


include $(BUILD_SHARED_LIBRARY)


$(call import-module,samples/Cpp/TestCpp)
$(call import-module,cocos2dx)
$(call import-module,cocos2dx/platform/third_party/android/prebuilt/libcurl)
$(call import-module,CocosDenshion/android)
$(call import-module,extensions)
$(call import-module,external/Box2D)
$(call import-module,external/chipmunk)


就此恍然大悟。

复制

LOCAL_WHOLE_STATIC_LIBRARIES += box2d_static

$(call import-module,external/Box2D)

到我的项目Android.mk文件中,再编译,顺利通过。


顺便打个广告

本人QQ:2813610155

承接各类游戏外包开发任务:)

包括培训 架构 指导开发等等