cocos2dx CCFileUtils::sharedFileUtils() 静态调用

cocos2dx CCFileUtils::sharedFileUtils() 静态调用,第1张

概述如题 CCFileUtils::sharedFileUtils() 静态调用,也就是在cpp文件的函数外面调用 Android平台会无故崩溃,跟踪调试发现在CCFileUtilsAndroid.cpp的42行过不去即 CCFileUtils* CCFileUtils::sharedFileUtils(){ if (s_sharedFileUtils == NULL) { 如题

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() 静态调用所遇到的程序开发问题。

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

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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存