我的项目是在xcode下开发的,加入了tinyXml,在xcode的ios模拟器上运行成功,但是我把项目迁移到android上去的时候,程序在加载游戏 场景的时候 crash了.通用cclog我把错误定位到了 TiXmlElement *rootElement = leveConfig->RootElement();
只要执行这句tinyXml的代码 ,程序 就会crash 了。请问大字是不是android 的ndk不支持tinyXml,还是我加载的不对。
我的项目是在xcode下开发的,加入了tinyXml,在xcode的ios模拟器上运行成功,但是我把项目迁移到android上去的时候,程序在加载游戏 场景的时候 crash了.通用cclog我把错误定位到了 TiXmlElement *rootElement = leveConfig->RootElement();
只要执行这句tinyXml的代码 ,程序 就会crash 了。请问大字是不是android 的ndk不支持tinyXml,还是我加载的不对。
肯定是支持的,可能是你什么编译开关没弄对吧。
得具体跟一下,比如这句话leveConfig == NULL, 所以就挂掉了,那么往前查为什么leveConfig是空你的?
ios上正确android上挂掉的可能原因之一就是,你的xml文件放置的目录没有正确地让程序知道。
解析的时候出错 很可能是资源问题
tinyxml意志android需要修改源码
在loadlife里面自己把原来读取数据改下,因为读取apk里面xml先要从apk解压出来
char* strdata =(char *)cocos2d::CCFileUtils::getFileData(value.c_str(),“r”, (long unsigned int *)pSize);
这个事原来小明给我说的
bool TiXmlDocument::LoadFile()
{
#if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID)
int i=0;
long length=0;
long *pSize=&length;
char* strdata =(char *)cocos2d::CCFileUtils::getFileData(value.c_str(),"r", (long unsigned int *)pSize);
char buf;
TIXML_STRING data;
data.reserve( length );
i=0;
for(;i<length;i++){
buf*=strdata*;
}
const char* lastPos = buf;
const char* p = buf;
buf = 0;
while( *p ) {
assert( p < (buf+length) );
if ( *p == 0xa ) {
data.append( lastPos, (p-lastPos+1) );
++p;
lastPos = p;
assert( p <= (buf+length) );
}
else if ( *p == 0xd ) {
if ( (p-lastPos) > 0 ) {
data.append( lastPos, p-lastPos );
}
data += (char)0xa;
if ( *(p+1) == 0xa ) {
p += 2;
lastPos = p;
assert( p <= (buf+length) );
}
else {
++p;
lastPos = p;
assert( p <= (buf+length) );
}
}
else {
++p;
}
}
if ( p-lastPos ) {
data.append( lastPos, p-lastPos );
}
Parse( data.c_str(), 0, TIXML_DEFAULT_ENCODING );
delete ]strdata;
if ( Error() )
return false;
else
return true;
#else
return LoadFile(Value());
#endif
}
**