zoukankan      html  css  js  c++  java
  • cocos2dx android运行Luac编译后的lua代码

    环境:

    win7 64

    cocos2d-2.1rc0-x-2.1.2

    lua 5.1

      通常我们编写好的lua代码都是明文形式,谁都可以查看修改,为了防止自己的劳动成果不被别人轻易的盗取,可以使用luac(lua库中自带)对其进行加密,转换为二进制文件。这样lua代码就无法直接查看,但是这里会有一个问题:在windows下能够很好的运行,在android上就会黑屏,提示错误:

    [LUA ERROR] binary string: unexpected end in precompiled chunk

    追根溯源

      在bool AppDelegate::applicationDidFinishLaunching()中查看lua加载代码:

     1 #if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID)
     2     CCString* pstrFileContent = CCString::createWithContentsOfFile( "program/main.lua" );
     3     if (pstrFileContent)
     4     {
     5         pEngine->executeString(pstrFileContent->getCString());
     6     }
     7 #else        
     8     std::string path = CCFileUtils::sharedFileUtils()->fullPathForFilename( "program/main.lua" );
     9     pEngine->addSearchPath( path.substr( 0, path.find_last_of( "/" ) ).c_str() );
    10     pEngine->executeScriptFile( path.c_str() );
    11 #endif

      这里用的是executeString()方法来加载lua文件,查看源码发现:

    1 LUALIB_API int (luaL_loadstring) (lua_State *L, const char *s) {
    2     printf("%s", s);
    3   return luaL_loadbuffer(L, s, strlen(s), s);
    4 }

    d

  • 相关阅读:
    docker运行爬虫代码
    python语法之流程控制(if while for)
    python基本数据类型
    python基本运算符
    python用户交互与格式化输出
    jieba模块基本介绍
    wordcloud库基本介绍
    计算机基础之编程语言
    计算机基础
    python入门之流程控制
  • 原文地址:https://www.cnblogs.com/520zijuan/p/3726108.html
Copyright © 2011-2022 走看看