【问题标题】:Torch 7/Lua cannot require a .so file, but package.loadlib() canTorch 7/Lua 不需要 .so 文件,但 package.loadlib() 可以
【发布时间】:2017-05-10 22:35:00
【问题描述】:

我在播放 Torch 7 代码时遇到问题。我有一个共享库 libhashnn.so 文件,我想在 Torch 7 脚本中加载函数,所以我使用这个表达式:require 'libhashnn',但是 trepl 给出了错误。

但是,如果我使用package.loadlibfunction,它确实有效。下面是结果,但是不知道为什么不能使用require,如何使用require才能成功加载lib?

require'libhashnn'
/home/dazhen/torch/install/share/lua/5.1/trepl/init.lua:383: bad argument #1 to '?' (table expected, got string)
stack traceback:
    [C]: in function 'error'
    /home/dazhen/torch/install/share/lua/5.1/trepl/init.lua:383: in function 'require'
    [string "_RESULT={require'libhashnn'}"]:1: in main chunk
    [C]: in function 'xpcall'
    /home/dazhen/torch/install/share/lua/5.1/trepl/init.lua:650: in function 'repl'
    ...zhen/torch/install/lib/luarocks/rocks/trepl/scm-1/bin/th:199: in main chunk  

f=package.loadlib('libhashnn.so' ,'luaopen_libhashnn')
[0.0195s]   
th> f
function: 0x41630f38

【问题讨论】:

    标签: lua require torch


    【解决方案1】:

    尝试调用package.loadlib 提供的函数。我敢打赌,你会得到与使用 require 时相同的错误。

    要了解原因:requirepackage.loadlib 等效,然后调用该函数,以便您正在加载的模块可以自行初始化。仅使用package.loadlib,此初始化未完成,因此不会显示初始化期间发生的错误。

    我不知道 hashnn 是什么,所以我不能告诉你它为什么坏了,但是看看 /home/dazhen/torch/install/share/lua/5.1/trepl/init.lua 第 383 行可能是了解发生了什么的好开始。

    【讨论】:

    • 感谢您的建议。但是我有时在脚本中发现这个require 'libhashnn' 可以正常工作,但有时却不能……仍然很困惑。
    猜你喜欢
    • 2018-09-08
    • 2021-12-31
    • 1970-01-01
    • 2021-10-29
    • 1970-01-01
    • 2018-10-11
    • 2013-06-09
    • 1970-01-01
    • 2018-08-06
    相关资源
    最近更新 更多