2016-12-26 35 views
1

在播放Torch 7代碼時出現問題。我有一個共享庫libhashnn.so文件,我想在Torch 7腳本中加載函數,所以我使用這個表達式:require 'libhashnn',但是trepl提供了一個錯誤。Torch 7/Lua不需要.so文件,但是package.loadlib()可以

但是,如果我使用package.loadlib函數,它確實有效。以下是結果,但我不知道爲什麼我不能使用require,如何才能使用require來成功加載庫?

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 

回答

0

嘗試調用一個package.loadlib爲您提供的功能。我敢打賭,當你使用require時,你會得到同樣的錯誤。

要理解爲什麼:requirepackage.loadlib等效,然後調用該函數以便您加載的模塊可以自行初始化。只有package.loadlib,這個初始化沒有完成,所以在初始化期間發生的錯誤不會顯示出來。

我不知道hashnn是什麼,所以我不能告訴你它爲什麼壞了,但看看/home/dazhen/torch/install/share/lua/5.1/trepl/init.lua 383行可能是一個很好的開始,找出正在發生的事情。

+0

感謝您的建議。但我有時在腳本中發現這個'require'libhashnn''可以正常工作,但有時它不能......仍然困惑。 –

相關問題