cocos2dx 2.1.3编程记录(1)

cocos2dx 2.1.3编程记录(1),第1张

概述问题1、 我的过程是这样的,我先建立了一个支持lua的cocos2d-x的项目,还没有写任何的代码,然后编译,说找不到cocos-ext.h这个文件,然后包含路径以及添加链接库,然后编译通过,但是执行的时候,出现了链接错误如下: liblua.lib(tolua_to.obj) : error LNK2001: 无法解析的外部符号 _lua_pushnumber 1>CCLuaEngine.obj

问题1

我的过程是这样的,我先建立了一个支持luacocos2d-x的项目,还没有写任何的代码,然后编译,说找不到cocos-ext.h这个文件,然后包含路径以及添加链接库,然后编译通过,但是执行的时候,出现了链接错误如下:

liblua.lib(tolua_to.obj):errorLNK2001:
无法解析的外部符号_lua_pushnumber
1>ccluaEngine.obj:errorLNK2019:
无法解析的外部符号_lua_pushnumber,该符号在函数"public:virtualint__thiscallcocos2d::ccluaEngine::executeLayertouchesEvent(classcocos2d::cclayer*,int,classcocos2d::CCSet*)"(?executeLayertouchesEvent@ccluaEngine@cocos2d@@UAEHPAVcclayer@2@HPAVCCSet@2@@Z)中被引用
1>liblua.lib(ccluaStack.obj):errorLNK2001:
无法解析的外部符号_lua_pushnumber
1>liblua.lib(tolua_is.obj):errorLNK2001:
无法解析的外部符号_lua_pushnumber
1>liblua.lib(tolua_push.obj):errorLNK2001:
无法解析的外部符号_lua_pushnumber
1>ccluaEngine.obj:errorLNK2019:
无法解析的外部符号_lua_pushinteger,该符号在函数"public:virtualint__thiscallcocos2d::ccluaEngine::executeLayertouchesEvent(classcocos2d::cclayer*,classcocos2d::CCSet*)"(?executeLayertouchesEvent@ccluaEngine@cocos2d@@UAEHPAVcclayer@2@HPAVCCSet@2@@Z)中被引用
1>tolua_fix.obj:errorLNK2001:
无法解析的外部符号_lua_pushinteger
1>liblua.lib(ccluaStack.obj):errorLNK2001:
无法解析的外部符号_lua_pushinteger
1>liblua.lib(tolua_event.obj):errorLNK2001:
无法解析的外部符号_lua_createtable
1>ccluaEngine.obj:errorLNK2019:
无法解析的外部符号_lua_createtable,该符号在函数"public:virtualint__thiscallcocos2d::ccluaEngine::executeLayertouchesEvent(classcocos2d::cclayer*,classcocos2d::CCSet*)"(?executeLayertouchesEvent@ccluaEngine@cocos2d@@UAEHPAVcclayer@2@HPAVCCSet@2@@Z)中被引用
1>tolua_fix.obj:errorLNK2001:
无法解析的外部符号_lua_createtable
1>liblua.lib(ccluaStack.obj):errorLNK2001:
无法解析的外部符号_lua_createtable
1>liblua.lib(tolua_map.obj):errorLNK2001:
无法解析的外部符号_lua_createtable
1>ccluaEngine.obj:errorLNK2019:
无法解析的外部符号_lua_rawseti,该符号在函数"public:virtualint__thiscallcocos2d::ccluaEngine::executeLayertouchesEvent(classcocos2d::cclayer*,classcocos2d::CCSet*)"(?executeLayertouchesEvent@ccluaEngine@cocos2d@@UAEHPAVcclayer@2@HPAVCCSet@2@@Z)中被引用
1>liblua.lib(ccluaStack.obj):errorLNK2001:
无法解析的外部符号_lua_rawseti
1>liblua.lib(tolua_to.obj):errorLNK2001:
无法解析的外部符号_lua_tolstring
1>Cocos2dxLuaLoader.obj:errorLNK2019:
无法解析的外部符号_lua_tolstring,该符号在函数_cocos2dx_lua_loader中被引用
1>tolua_fix.obj:errorLNK2001:
无法解析的外部符号_lua_tolstring
1>liblua.lib(ccluaStack.obj):errorLNK2001:
无法解析的外部符号_lua_tolstring
1>liblua.lib(tolua_is.obj):errorLNK2001:
无法解析的外部符号_lua_tolstring
1>Cocos2dxLuaLoader.obj:errorLNK2019:
无法解析的外部符号_luaL_checklstring,该符号在函数_cocos2dx_lua_loader中被引用
1>Cocos2dxLuaLoader.obj:errorLNK2019:
无法解析的外部符号_luaL_error,该符号在函数_cocos2dx_lua_loader中被引用
1>liblua.lib(tolua_is.obj):errorLNK2001:
无法解析的外部符号_luaL_error
1>liblua.lib(tolua_map.obj):errorLNK2001:
无法解析的外部符号_luaL_error
1>Cocos2dxLuaLoader.obj:errorLNK2019:
无法解析的外部符号_luaL_loadbuffer,该符号在函数_cocos2dx_lua_loader中被引用
1>liblua.lib(tolua_map.obj):errorLNK2001:
无法解析的外部符号_luaL_loadbuffer
1>liblua.lib(tolua_map.obj):errorLNK2001:
无法解析的外部符号_lua_gettop
1>liblua.lib(tolua_push.obj):errorLNK2001:
无法解析的外部符号_lua_gettop
1>liblua.lib(tolua_to.obj):errorLNK2001:
无法解析的外部符号_lua_gettop
1>liblua.lib(tolua_event.obj):errorLNK2001:
无法解析的外部符号_lua_gettop
1>LuaCocos2d.obj:errorLNK2019:
无法解析的外部符号_lua_gettop,该符号在函数"int__cdecltolua_Cocos2d_CCAffinetransformConcat00(structlua_State*)"(?tolua_Cocos2d_CCAffinetransformConcat00@@YahpAulua_State@@@Z)中被引用
1>tolua_fix.obj:errorLNK2001:
无法解析的外部符号_lua_gettop
1>liblua.lib(ccluaStack.obj):errorLNK2001:
无法解析的外部符号_lua_gettop
1>liblua.lib(tolua_is.obj):errorLNK2001:
无法解析的外部符号_lua_gettop
1>liblua.lib(tolua_event.obj):errorLNK2001:
无法解析的外部符号_lua_touserdata
1>LuaCocos2d.obj:errorLNK2019:
无法解析的外部符号_lua_touserdata,该符号在函数"int__cdecltolua_get_Cocos2d_kmMat4_mat(structlua_State*)"(?tolua_get_Cocos2d_kmMat4_mat@@YahpAulua_State@@@Z)中被引用
1>tolua_fix.obj:errorLNK2001:
无法解析的外部符号_lua_touserdata
1>liblua.lib(tolua_map.obj):errorLNK2001:
无法解析的外部符号_lua_touserdata
1>liblua.lib(tolua_to.obj):errorLNK2001:
无法解析的外部符号_lua_touserdata
1>liblua.lib(tolua_map.obj):errorLNK2001:
无法解析的外部符号_lua_pushstring
1>liblua.lib(tolua_push.obj):errorLNK2001:
无法解析的外部符号_lua_pushstring
1>liblua.lib(tolua_event.obj):errorLNK2001:
无法解析的外部符号_lua_pushstring
1>LuaCocos2d.obj:errorLNK2019:
无法解析的外部符号_lua_pushstring,该符号在函数"int__cdecltolua_get_Cocos2d_kmMat4_mat(structlua_State*)"(?tolua_get_Cocos2d_kmMat4_mat@@YahpAulua_St

............

解决方法:

要加一个链接库就是lua51.lib

2、问题

make:execvp: /cygdrive/d/androID-ndk/toolchains/arm-linux-androIDeabi-4.4.3/prebuilt/windows/bin/arm-linux-androIDeabi-g++:Argument List too long
make: *** [obj/local/armeabi/libirrlichtbullet.so] Error 127
[/mw_shl_code]

解决:

路径参数过长,去掉多余路径

3、问题

Compile++ thumb : game_shared <= main.cpp
arm-linux-androIDeabi-g++.exe: error: CreateProcess: Nosuch file or directory
/cygdrive/c/development/androID-ndk-r8c/build/core/build-binary.mk:263:recipe for target `obj/local/armeabI/ObJs/game_shared/hellocpp/main.o' Failed

解决:

路径参数过长,去掉多余路径

问题4

1. jni/../../../cocos2dx/platform/androID/CCCommon.cpp:Infunction'voIDcocos2d::cclog(charconst*,...)':

2. jni/../../../cocos2dx/platform/androID/CCCommon.cpp:44:72:error:formatnotastringliteralandnoformatarguments[-Werror=format-s@R_404_4722@]

3. jni/../../../cocos2dx/platform/androID/CCCommon.cpp:Infunction'voIDcocos2d::ccluaLog(charconst*)':

4. jni/../../../cocos2dx/platform/androID/CCCommon.cpp:54:77:error:formatnotastringliteralandnoformatarguments[-Werror=format-s@R_404_4722@]

5. cc1plus:somewarningsbeingtreatedaserrors

6.

7. make:***[obj/local/armeabI/ObJs/cocos2dx_static/platform/androID/CCCommon.o]Error1

解决:

Application.mk里面添加下面代码

[cpp]view plaincopy

1. APP_CPPFLAGS+=-Wno-error=format-s@R_404_4722@

5、问题:

如果需要把项目从(mac)Xcode一直到(window)VS2012上面,因为Xcode的默认编码是UTF-8(With BOM),而VS2012对此编码的支持不好,编译时会出现下面的警告:

1>e:\project\trunk\clIEnt\project\xxkapai\classes\common\extendclass\ccanimationext.cpp: warning C4819: 该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为 Unicode 格式以防止数据丢失

1>e:\project\trunk\clIEnt\project\xxkapai\classes\common\extendclass\ccanimationext.h: warning C4819: 格式以防止数据丢失

解决:

去掉警告,可以使用转码工具,把文件的编码统一转化为Unicode

6、问题:编译出错

[armeabi] Compile++thumb: cocos_lua_static <= ccluaBrIDge.cpp

In file includedfrom E:/project/trunk/clIEnt/Project/XXKaPai/Classes/Common/GXC2dxlibrary/GXScrollVIEw/GXMenuItemImage.h:12:0,

fromE:/cocos2d-2.1rc0-x-2.1.3/scripting/lua/proj.androID/../cocos2dx_support/ccluaEngine.h:41,

fromE:/cocos2d-2.1rc0-x-2.1.3/scripting/lua/proj.androID/../cocos2dx_support/cclua BrIDge.h:30,

fromE:/cocos2d-2.1rc0-x-2.1.3/scripting/lua/proj.androID/../cocos2dx_support/ccluaBrIDge.cpp:25:

E:/project/trunk/clIEnt/Project/XXKaPai/Classes/Common/GXC2dxlibrary/GXScrollVIEw/GXNode.h:13:24:Fatal error: CcmenuItem.h: No such file or directory

compilation terminated.

/cygdrive/e/worksoft/androID-ndk-r9d/build/core/build-binary.mk:393:recipe for target 'obj/local/armeabI/ObJs/cocos_lua_static/__/cocos2dx_support/ccluaBrIDge.o' Failed

make: ***[obj/local/armeabI/ObJs/cocos_lua_static/__/cocos2dx_support/ccluaBrIDge.o]Error 1

make: Leavingdirectory '/cygdrive/e/project/trunk/clIEnt/Project/XXKaPai/proj.androID'

解决:

遇到类似的头文件找不到问题:

1、先查看自己项目androID.mk文件是否LOCAL_C_INCLUDES: 变量中,加入了头文件路径。

LOCAL_C_INCLUDES :=$(LOCAL_PATH) \

$(LOCAL_PATH)/include \

$(LOCAL_PATH)/kazmath/include \

$(LOCAL_PATH)/platform/androID

2、查看引入的这个头文件所在工程(路径),看所在工程的androID.mk文件是否LOCAL_EXPORT_C_INCLUDES : 变量中,加入了头文件路径。

LOCAL_EXPORT_C_INCLUDES:= $(LOCAL_PATH) \

$(LOCAL_PATH)/include \

$(LOCAL_PATH)/kazmath/include \

$(LOCAL_PATH)/platform/androID\

$(LOCAL_PATH)/menu_nodes

3、如果上面的不能解决问题,在查看,引入的头文件是否使用到,如果没有,则删除,如果有使用到,待解决。。。

问题5

$ ./build_native.sh

NDK_ROOT =/cygdrive/e/worksoft/androID-ndk-r9d

COCOS2DX_ROOT =/cygdrive/e/cocos2d-2.1rc0-x-2.1.3

APP_ROOT = /cygdrive/e/project/trunk/clIEnt/Project/XXKaPai/proj.androID/..

APP_ANDROID_ROOT =/cygdrive/e/project/trunk/clIEnt/Project/XXKaPai/proj.androID

Using prebuilt externals

make: Entering directory'/cygdrive/e/project/trunk/clIEnt/Project/XXKaPai/proj.androID'

AndroID NDK:WARNING:/cygdrive/e/cocos2d-2.1rc0-x-2.1.3/cocos2dx/AndroID.mk:cocos2dx_static:LOCAL_LDliBS is always ignored for static librarIEs

[armeabi] Compile++ thumb:cocos2dlua_shared <= StringAnd.cpp

jni/../../Classes/Common/platformEx/PtmAndroID/StringAnd.cpp:In static member function 'static char const*StringAnd::getCharacteratIndex(char const*,int)':

jni/../../Classes/Common/platformEx/PtmAndroID/StringAnd.cpp:60:62:error: no matching function for call to'_jnienv::GetStringUTFChars(jnienv*&,_Jstring*&,bool)'

jni/../../Classes/Common/platformEx/PtmAndroID/StringAnd.cpp:60:62:note: candIDate is:

E:/worksoft/androID-ndk-r9d/platforms/androID-8/arch-arm/usr/include/jni.h:878:17:note: char const* _jnienv::GetStringUTFChars(Jstring,jboolean*)

E:/worksoft/androID-ndk-r9d/platforms/androID-8/arch-arm/usr/include/jni.h:878:17:note: candIDate expects 2 arguments,3provIDed

/cygdrive/e/worksoft/androID-ndk-r9d/build/core/build-binary.mk:393:recipe for target 'obj/local/armeabI/ObJs/cocos2dlua_shared/__/__/Classes/Common/platformEx/PtmAndroID/StringAnd.o'Failed

make: ***[obj/local/armeabI/ObJs/cocos2dlua_shared/__/__/Classes/Common/platformEx/PtmAndroID/StringAnd.o]Error 1

make: Leaving directory'/cygdrive/e/project/trunk/clIEnt/Project/XXKaPai/proj.androID'

解决:

没有这个方法(三个参数的),只有两个参数的方法,给为两个参数的方法调用即可。

问题6

使用bluestacks模拟器和eclipse调试androID应用,把bluestacks作为默认设备,不需要每次运行应用程序时,选择模拟器,ecplise配置:

问题7

错误:

10-08 17:24:57.576: D/cocos2d-x deBUGinfo(9820): on update finish!

10-08 17:24:57.626: D/cocos2d-x deBUGinfo(9820): value at stack [-1] is not function

使用lua时出现这样的错误,有可能是因为少了某一个标点符号,如逗号。

总结

以上是内存溢出为你收集整理的cocos2dx 2.1.3编程记录(1)全部内容,希望文章能够帮你解决cocos2dx 2.1.3编程记录(1)所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1033624.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-24
下一篇 2022-05-24

发表评论

登录后才能评论

评论列表(0条)

保存