转载请注明出处:

http://www.cnblogs.com/darkknightzh/p/5754872.html

前段时间用终端和zerobrane运行torch的lua程序。zerobrane主要用于调试(虽说功能简单,但是还算可以用吧)。终端直接使用th xx.lua(torch安装的是luajit),zerobrane直接点击两个右箭头的“Execute the current project”。某天运行程序时,突然提示:

File.lua:: Failed to load function from bytecode: (binary): cannot load incompatible bytecode
[C]: in function 'error'
...program/torch/install/share/lua/5.1/torch/File.lua:: in function 'readObject'
...program/torch/install/share/lua/5.1/torch/File.lua:: in function 'readObject'
...program/torch/install/share/lua/5.1/torch/File.lua:: in function 'readObject'
...program/torch/install/share/lua/5.1/torch/File.lua:: in function 'load'

程序崩溃的地方是调用‘dofile’,在其内部出错的地方是load函数(之前有save成.t7文件,判断该文件存在,则直接load,否则重新生成该文件)。

当时很奇怪。后来发现:

1. 如果使用zerobrane运行程序进行save操作,再使用zerobrane运行程序,进行load操作,则不会崩溃。

2. 如果删除该.t7文件,使用终端运行该程序,save成t7文件,再使用终端运行程序,此时load该t7文件,也不会出错。

3. 如果使用zerobrane进行save,再使用终端load文件,或者使用终端save,再使用zerobrane进行load,则程序都会在load处崩溃。

个人猜测,原因应该是终端使用th命令和zerobrane直接运行文件所使用的解释器(interpreter)不同导致的。但是更改了一下,暂时没有成功。。。额,以后再说吧。。。

目前解决方法就是:单一使用zerobrane或者终端的th来运行程序。不要交替的使用。

ps:

1. 终端中运行th,信息如下:

运行lua,信息如下:

运行luajit,信息如下:

2. 后来测试过,如果save比较简单的数据,使用另一种方式load的话,能成功载入数据;如果save比较复杂的东西,比如有函数之类的,貌似就出问题了(此处不太确定)。

(原)lua提示cannot load incompatible bytecode的更多相关文章

  1. bundle install 安装的 gem 提示 cannot load such file

    /usr/local/lib/ruby/site_ruby/2.1.0/rubygems/core_ext/kernel_require.rb:54:in `require': cannot load ...

  2. [转]Navicat for oracle 提示 cannot load oci dll,193的解决方法 orcale 11g

    Navicat for oracle 提示 cannot load oci dll,193的解决方法   内网有一台windows server 2012,安装了Navicat 11.1.8 连接or ...

  3. Navicat Premuim远程连接oracle 提示 cannot load oci dll,193的解决方法

    转载:http://blog.51cto.com/xiao987334176/1640991 内网有一台windows server 2012,安装了Navicat 11.1.8 连接oracle的时 ...

  4. Navicat 连接 Oracle数据库 提示 cannot load OCI DLL 的解决

    一.32位系统下 cannot load OCI DLL,126 解决方法:工具->选项->OCI 选择oracle安装目录下bin里面的oci.dll 二 .在64位系统下安装了Orac ...

  5. c#调用ffmpeg嵌入srt/ass字幕提示Cannot load default config file...

    c#调用ffmpeg嵌入srt/ass字幕提示 Fontconfig error: Cannot load default config file[Parsed_subtitles_0 @ 00000 ...

  6. virtualbox 启动虚拟机提示Cannot load R0 module

    Cannot load R0 module C:\Program Files\Oracle\VirtualBox/VBoxDDR0.r0: SUPR3LoadModule: supLoadModule ...

  7. [Lua]基于cc.load('mvc') .ViewBase索引资源方案

    local MainScene = class("MainScene", cc.load("mvc").ViewBase) MainScene.RESOURCE ...

  8. 聊聊LuaJIT

    JIT 什么是JITJIT = Just In Time即时编译,是动态编译的一种形式,是一种优化虚拟机运行的技术. 程序运行通常有两种方式,一种是静态编译,一种是动态解释,即时编译混合了这二者.Ja ...

  9. Cocos2d-x使用Luajit将Lua脚本编译成bytecode,启用加密

    http://www.cocoachina.com/bbs/read.php?tid=205802 lua脚本进行加密,查了一下相关的资料 ,得知lua本身能够使用luac将脚本编译为字节码(byte ...

随机推荐

  1. sqlite编译

    1.下载代码:http://www.sqlite.org/download.html ,windows下下载sqlite-amalgamation-xxx.zip和sqlite-dll-win32-x ...

  2. oracle RAC调整数据文件大小并移动表到指定的表空间

    一.Oracle RAC 调整表空间数据文件大小 1.先查找出表空间对应的数据文件路径: select file_name,tablespace_name from dba_data_files ; ...

  3. Linux上安装JDK

    1.下载rpm文件并安装 rpm -ivh jdk-7u51-linux-x64.rpm 2.修改/etc/profile文件,增加以下配置 export JAVA_HOME=/usr/java/jd ...

  4. 简单说pyglet.event

    emitter,就是pyglet.event.EventDispatcher的子类, 负责发出事件的消息,并且规定了响应消息的函数名. class Consumer(pyglet.event.Even ...

  5. ios 多线程 面试

    1 多线程是什么  同步完成多项任务,提高了资源的使用效率,从硬件.操作系统.应用软件不同的角度去看,多线程被赋予不同的内涵,对于硬件,现在市面上多数的CPU都是多核的,多核的CPU运算多线程更为出色 ...

  6. SVN上传代码时代码失败

    Description : You are not authorized to access the files in the repository.Suggestion : You might be ...

  7. 逻辑数据库设计 - 需要ID(谈主键Id)

    本文的目标就是要确认那些使用了主键,却混淆了主键的本质而造成的一种反模式. 一.确立主键规范 每个了解数据库设计的人都知道,主键对于一张表来说是一个很重要,甚至必需的部分.这确实是事实,主键是好的数据 ...

  8. PERL 实现微信登录

    get 请求: https://login.weixin.qq.com/jslogin? appid=wx782c26e4c19acffb &redirect_uri=https%3A%2F% ...

  9. java日期时间处理小结

    这两周时间的Java开发让我感觉到JAVA语言确实把一些简单的事情搞得很复杂,比如日期时间处理,或许是考虑不同时区国际化跨平台之类的因素,但JAVA语言处理确实让我很困惑,相信身边好多开发的同事也如此 ...

  10. Tomcat部署项目通过—IP地址:端口访问

    如题所示,实现效果图如下: 设置如下: (1)修改${tomcat}/config/sever.xml文件虚拟内容目录: <Engine name="Catalina" de ...