今天发现Cocos引擎可以更新,所以我将Cocos引擎从2.2.1更新到了2.2.5,使用2.2.5对一个项目打包,发现打包失败,之前使用2.2.1能打包成功,使用2.2.5打包却失败
Based on: cocos2d-x-3.4
Updated project.properties
Updated local.properties
Updated file E:\game\workspace\Cocos\CocosProjects\DeepSeaDemo\proj.android\proguard-project.txt
It seems that there are sub-projects. If you want to update them
please use the --subprojects parameter.
Android NDK: WARNING: APP_PLATFORM android-19 is larger than android:minSdkVersion 9 in ./AndroidManifest.xml
make.exe: Entering directory E:/game/workspace/Cocos/CocosProjects/DeepSeaDemo/proj.android' Compile++ thumb: cocos2dcpp_shared <= AppDelegate.cpp Compile++ thumb: cocos2dcpp_shared <= SceneStart.cpp Compile++ thumb: cocos2dcpp_shared <= SceneMenu.cpp Compile++ thumb: cocos2dcpp_shared <= SceneGame.cpp Compile++ thumb: cocos2dcpp_shared <= Player.cpp StaticLibrary : libcpufeatures.a jni/../../Classes/SceneGame.cpp: In member function 'void SceneGame::addMap()': jni/../../Classes/SceneGame.cpp:153:31: warning: deprecated conversion from string constant to 'char*' -Wwrite-strings] addGrass(map2, "objGress", 31); ^ jni/../../Classes/SceneGame.cpp:154:31: warning: deprecated conversion from string constant to 'char*' -Wwrite-strings] addGrass(map1, "objGress", 31); ^ jni/../../Classes/SceneGame.cpp:157:28: warning: deprecated conversion from string constant to 'char*' -Wwrite-strings] addItem(map1, "objItem", 4); ^ jni/../../Classes/SceneGame.cpp:158:28: warning: deprecated conversion from string constant to 'char*' -Wwrite-strings] addItem(map2, "objItem", 4); ^ jni/../../Classes/SceneGame.cpp: In member function 'void SceneGame::eatCoin()': jni/../../Classes/SceneGame.cpp:185:59: error: no matching function for call to 'Util::GL2map(cocos2d::Point, cocos2d::TMXTiledMap*&)' Point pt = Util::GL2map((Point)player->getPosition(), map); ^ jni/../../Classes/SceneGame.cpp:185:59: note: candidate is: In file included from jni/../../Classes/SceneGame.h:4:0, from jni/../../Classes/SceneGame.cpp:1: jni/../../Classes/Util.h:81:15: note: static cocos2d::Point Util::GL2map(cocos2d::Point&, cocos2d::TMXTiledMap*) static Point GL2map(Point& ptGL, TMXTiledMap* map) ^ jni/../../Classes/Util.h:81:15: note: no known conversion for argument 1 from 'cocos2d::Point {aka cocos2d::Vec2}' to 'cocos2d::Point& {aka cocos2d::Vec2&}' jni/../../Classes/SceneGame.cpp: In member function 'void SceneGame::collisionItem()': jni/../../Classes/SceneGame.cpp:569:60: error: no matching function for call to 'Util::GLTmap(cocos2d::Point, cocos2d::TMXTiledMap*&)' Point pm = Util::GLTmap((Point)player->getPosition(), map); ^ jni/../../Classes/SceneGame.cpp:569:60: note: candidate is: In file included from jni/../../Classes/SceneGame.h:4:0, from jni/../../Classes/SceneGame.cpp:1: jni/../../Classes/Util.h:96:15: note: static cocos2d::Point Util::GLTmap(cocos2d::Vec2&, cocos2d::TMXTiledMap*) static Point GLTmap(Vec2& ptGL, TMXTiledMap* map) ^ jni/../../Classes/Util.h:96:15: note: no known conversion for argument 1 from 'cocos2d::Point {aka cocos2d::Vec2}' to 'cocos2d::Vec2&' At global scope: cc1plus.exe: warning: unrecognized command line option "-Wno-extern-c-compat" cc1plus.exe: warning: unrecognized command line option "-Wno-extern-c-compat" make.exe: *** Error 1 make.exe: *** Waiting for unfinished jobs.... make.exe: Leaving directory E:/game/workspace/Cocos/CocosProjects/DeepSeaDemo/proj.android’
Running command: compile
Building mode: debug
Android platform not specified, searching a default one…
running: ‘“E:\game\adt-bundle-windows-x86-20131030\sdk\tools\android” update project -t android-19 -p E:\game\workspace\Cocos\CocosProjects\DeepSeaDemo\proj.android’
building native
NDK build mode: release
NDK_TOOLCHAIN_VERSION: 4.9
running: ‘“E:\game\android-ndk-r10d\ndk-build” -C E:\game\workspace\Cocos\CocosProjects\DeepSeaDemo\proj.android -j3 NDK_MODULE_PATH=C:\Cocos\frameworks/cocos2d-x-3.4;C:\Cocos\frameworks/cocos2d-x-3.4/cocos;C:\Cocos\frameworks/cocos2d-x-3.4/external NDK_TOOLCHAIN_VERSION=4.9’
Ndk build failed!
从log上看,打包出错在于
error: no matching function for call to ‘Util::GL2map(cocos2d::Point, cocos2d::TMXTiledMap*&)’
Point pt = Util::GL2map((Point)player->getPosition(), map);
^
jni/…/…/Classes/SceneGame.cpp:185:59: note: candidate is:
In file included from jni/…/…/Classes/SceneGame.h
0,
from jni/…/…/Classes/SceneGame.cpp:1:
jni/…/…/Classes/Util.h:81:15: note: static cocos2d::Point Util::GL2map(cocos2d::Point&, cocos2d::TMXTiledMap*)
static Point GL2map(Point& ptGL, TMXTiledMap* map)
^
jni/…/…/Classes/Util.h:81:15: note:
no known conversion for argument 1 from ‘cocos2d::Point {aka cocos2d::Vec2}’ to ‘cocos2d::Point& {aka cocos2d::Vec2&}’
jni/…/…/Classes/SceneGame.cpp: In member function ‘void SceneGame::collisionItem()’:
jni/…/…/Classes/SceneGame.cpp:569:60: error: no matching function for call to ‘Util::GLTmap(cocos2d::Point, cocos2d::TMXTiledMap*&)’
Point pm = Util::GLTmap((Point)player->getPosition(), map);
^
jni/…/…/Classes/SceneGame.cpp:569:60: note: candidate is:
In file included from jni/…/…/Classes/SceneGame.h
0,
from jni/…/…/Classes/SceneGame.cpp:1:
jni/…/…/Classes/Util.h:96:15: note: static cocos2d::Point Util::GLTmap(cocos2d::Vec2&, cocos2d::TMXTiledMap*)
static Point GLTmap(Vec2& ptGL, TMXTiledMap* map)
^
jni/…/…/Classes/Util.h:96:15: note: no known conversion for argument 1 from ‘cocos2d::Point {aka cocos2d::Vec2}’ to ‘cocos2d::Vec2&’
我在代码中使用的函数是Util::GL2map(Point ptGL, TMXTiledMap* map)’ 0u2u没有
没有用’Util::GL2map(cocos2d::Point, cocos2d::TMXTiledMap*&)’ 0u2uYiE-l
我刚刚我的代码中没有在 TMXTliedMap* 后面加&
说多了都是泪,我就建了一个helloworld的,2.2.5都打包失败
3.6+2.2.5,默认helloworld工程,64位PC机上可以打包,32位笔记本上打包出错,
直接Ndk build failed! 查了好久,缩短目录、加ram、重装等都试过,仍然解决不了
2.2.5不能打包+1。。。刚刚想发帖来着。
这个问题我也遇到过,后来我将这个问题反馈给你触控科技,在触控科技的工程师的帮助下我解决了这个问题,是因为NDK的版本不同造成的,因为你用的是64位的NDK,在32位的机器上肯定打包不成功
各位不要再喷了,我的问题已经解决了,是一楼中划出的红色部分出错了