cocos2dx中的c++文件已经添加到jni里面的AndroID.mk文件中,但是却依然出现问题,之前有同事修改过这个mk文件,循环读取Classes文件夹中的cpp和c文件,内容如下:
LOCAL_PATH := $(call my-dir)include $(CLEAR_VARS)$(call import-add-path,$(LOCAL_PATH)/../../cocos2d)$(call import-add-path,$(LOCAL_PATH)/../../cocos2d/external)$(call import-add-path,$(LOCAL_PATH)/../../cocos2d/cocos)LOCAL_MODulE := cocos2dcpp_sharedLOCAL_MODulE_filename := libcocos2dcpp# 配置自己的源文件目录和源文件后缀名MY_fileS_PATH := $(LOCAL_PATH) \ $(LOCAL_PATH)/../../Classes MY_fileS_SUFFIX := %.cpp %.c # 递归遍历目录下的所有的文件rwildcard=$(wildcard ) $(foreach d,$(wildcard *),$(call rwildcard,$d/,))# 获取相应的源文件MY_ALL_fileS := $(foreach src_path,$(MY_fileS_PATH),$(src_path),*.*) ) MY_ALL_fileS := $(MY_ALL_fileS:$(MY_CPP_PATH)/./%=$(MY_CPP_PATH)%)MY_SRC_List := $(filter $(MY_fileS_SUFFIX),$(MY_ALL_fileS)) MY_SRC_List := $(MY_SRC_List:$(LOCAL_PATH)/%=%)# 去除字串的重复单词define uniq = $(eval seen :=) $(foreach _,,$(if $(filter $_,${seen}),$(eval seen += $_))) ${seen}endef# 递归遍历获取所有目录MY_ALL_Dirs := $(dir $(foreach src_path,*/) ) )MY_ALL_Dirs := $(call uniq,$(MY_ALL_Dirs))MY_SRC_List := $(filter-out %Classes/main.cpp,$(MY_SRC_List))# 赋值给NDK编译系统LOCAL_SRC_fileS := $(MY_SRC_List)LOCAL_C_INCLUDES := $(MY_ALL_Dirs)LOCAL_WHolE_STATIC_liBRARIES := cocos2dx_staticLOCAL_WHolE_STATIC_liBRARIES += cocosdenshion_staticLOCAL_WHolE_STATIC_liBRARIES += Box2d_static# LOCAL_WHolE_STATIC_liBRARIES += cocosbuilder_static# LOCAL_WHolE_STATIC_liBRARIES += spine_static# LOCAL_WHolE_STATIC_liBRARIES += cocostudio_staticLOCAL_WHolE_STATIC_liBRARIES += cocos_network_staticLOCAL_WHolE_STATIC_liBRARIES += cocos_extension_staticLOCAL_WHolE_STATIC_liBRARIES += cocos2dx-talkingdatainclude $(BUILD_SHARED_liBRARY)define add_shared_lib include $(CLEAR_VARS) LOCAL_MODulE := LOCAL_MODulE_filename := LOCAL_SRC_fileS := $(TARGET_ARCH_ABI)/.so include $(PREBUILT_SHARED_liBRARY)endefshared_lib_names := libbdpush_V2_0 \ libBaIDuMapSDK_v2_3_1 \ libGif \ liblocSDK4 \ libTeaCrypt$(foreach item,$(shared_lib_names),$(eval $(call add_shared_lib,$(item))))$(call import-module,.)$(call import-module,audio/androID)$(call import-module,Box2D)# $(call import-module,editor-support/cocosbuilder)# $(call import-module,editor-support/spine)# $(call import-module,editor-support/cocostudio)$(call import-module,network)$(call import-module,extensions)#$(call import-module,proj.androID/jni)
我为了方便直接添加
<pre name="code" ># 赋值给NDK编译系统LOCAL_SRC_fileS := $(MY_SRC_List) \
<span > </span> $(LOCAL_PATH)/../../ShareSDK/C2DXShareSDK/AndroID/C2DXShareSDK.cpp \
<span > </span> ...等等
LOCAL_C_INCLUDES := $(MY_ALL_Dirs) \
<pre name="code" ><span > </span> $(LOCAL_PATH)/../../ShareSDK/C2DXShareSDK/AndroID \
<span > </span> ...等等结果还是无法找到定义C2DXSshareSDK中的各种函数定义,很明显是没有编译该文件,最后改变为
# 赋值给NDK编译系统
<pre name="code" >MY_SRC_List += <span >../../ShareSDK/C2DXShareSDK/AndroID/C2DXShareSDK.cpp </span>
<pre name="code" ><span >MY_SRC_List += ...等等</span>
<span ></span>
<span ></span><pre name="code" >MY_ALL_Dirs += <span >$(LOCAL_PATH)/../../ShareSDK/C2DXShareSDK/AndroID</span>
<pre name="code" >MY_ALL_Dirs += ...等等LOCAL_SRC_fileS := $(MY_SRC_List)LOCAL_C_INCLUDES := $(MY_ALL_Dirs)
还是编译出错,不过错误不同了,显示vector,std找不到,这个时候我把调用他的文件中添加上
include "cocos2d.h" using namespace std;using namespace cocos2d;
好了,编译成功,总结一下androID使用ndk只要是c/c++文件出错的,多半编译错误在jni里面的AndroID.mk文件中。
还有androID使用Cocos2dx,记得添加cocos的java的src文件,可以右键选择项目,选择Build Path->link Source,然后自定义一个名字,把需要的文件夹添加进去,cocos2dx的java目录是...\cocos2d\cocos\platform\androID\java\src,当然也可以用其他比如import方式直接选择import->AndroID->Existing AndroID Code Into Workspace,选择cocos2dx3.0以上版本直接选择项目中的\cocos文件夹即可。
总结以上是内存溢出为你收集整理的关于cocos2dx3.0在eclipse中的一个小编译问题全部内容,希望文章能够帮你解决关于cocos2dx3.0在eclipse中的一个小编译问题所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)