CCfileUtils::sharedfileUtils()
静态调用,也就是在cpp文件的函数外面调用
AndroID平台会无故崩溃,跟踪调试发现在CCfileUtilsAndroID.cpp的42行过不去即
CCfileUtils* CCfileUtils::sharedfileUtils(){ if (s_sharedfileUtils == NulL) { s_sharedfileUtils = new CCfileUtilsAndroID(); s_sharedfileUtils->init(); std::string resourcePath = getApkPath(); s_pZipfile = new Zipfile(resourcePath,"assets/"); } return s_sharedfileUtils;}
std::string resourcePath = getApkPath();
这行 然后查看getApkPath()函数,里面也就返回string g_apkPath的c_str()
最后没查出别的有用信息,不过此时g_apkPath应该是null,因为g_apkPath是依靠java那边回调才设置的值
JNIEXPORT voID JNICALL Java_org_cocos2dx_lib_Cocos2dxHelper_nativeSetApkPath(jnienv* env,jobject thiz,Jstring apkPath) { g_apkPath = JniHelper::Jstring2string(apkPath); }
而静态调用了CCfileUtils::sharedfileUtils(),发生在静态区
而java加载libgame.so的方法如下
static { System.loadlibrary("game"); }可想而知getApkPath的调用就会在nativeSetApkPath之前
所以sharedfileUtils()就不要在全局区调用了(也就是静态调用)
但是ios平台,是没有问题
ps:遇到问题就先记录,以免以后再次遇到,耗费时间去找问题
总结以上是内存溢出为你收集整理的cocos2dx CCFileUtils::sharedFileUtils() 静态调用全部内容,希望文章能够帮你解决cocos2dx CCFileUtils::sharedFileUtils() 静态调用所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)