zoukankan      html  css  js  c++  java
  • (原)lua提示cannot load incompatible bytecode

    转载请注明出处:

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

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

    File.lua:301: 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:301: in function 'readObject'
        ...program/torch/install/share/lua/5.1/torch/File.lua:369: in function 'readObject'
        ...program/torch/install/share/lua/5.1/torch/File.lua:353: in function 'readObject'
        ...program/torch/install/share/lua/5.1/torch/File.lua:409: 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比较复杂的东西,比如有函数之类的,貌似就出问题了(此处不太确定)。

  • 相关阅读:
    云? 云! 晕! 云计算适合创业公司么?
    批量转移Windows Server的DNS设置
    Signs that you are a bad programmer
    IsNull Function in PeopleSoft MetaSQL
    JS绘制曲线图
    Why does my shared clipboard not work?
    C#入门详解(2)
    C#入门详解(1)
    分享范玮琪最初的梦想
    像战士一样生活
  • 原文地址:https://www.cnblogs.com/darkknightzh/p/5754872.html
Copyright © 2011-2022 走看看