一個lua問題解決過程
我在執行一個lua檔案的時候,遇到以下報錯資訊
D:\polycube-solver-master>\a\timer \lua514\lua5.1 polycube-solver.lua problems/soma-cube.txt >soma-res-jit2.txt \lua514\lua5.1: .\bitmatrix.lua:4: module 'bit' not found: no field package.preload['bit'] no file '.\bit.lua' no file 'D:\lua514\lua\bit.lua' no file 'D:\lua514\lua\bit\init.lua' no file 'D:\lua514\bit.lua' no file 'D:\lua514\bit\init.lua' no file '.\bit.dll' no file '.\bit51.dll' no file 'D:\lua514\bit.dll' no file 'D:\lua514\bit51.dll' no file 'D:\lua514\clibs\bit.dll' no file 'D:\lua514\clibs\bit51.dll' no file 'D:\lua514\loadall.dll' no file 'D:\lua514\clibs\loadall.dll' stack traceback: [C]: in function 'require' .\bitmatrix.lua:4: in main chunk [C]: in function 'require' polycube-solver.lua:4: in main chunk [C]: ?
而相同的檔案,使用作者提供的包中的luajit和自己編譯的LuaJIT-2.1.0-beta2可執行檔案是沒有問題的。
D:\polycube-solver-master>\a\timer lua-win\luajit polycube-solver.lua problems/soma-cube.txt >soma-res-jit2.txt D:\polycube-solver-master>\a\timer D:\LuaJIT-2.1.0-beta2\src\luajit polycube-solver.lua problems/soma-cube.txt >soma-res-jit.txt
查閱網上資訊得知,lua自己沒有內建位運算,需要使用擴充套件庫,才能在lua原始檔中require "bit"。從http://bitop.luajit.org/下載的LuaBitOp-1.0.2.zip,但這是個原始碼,不能直接執行。 按照裡面文件的提示,把這個壓縮包中的檔案釋放到lua原始碼所在目錄,然後執行msvcbuild.bat
D:\lua5.1\src>msvcbuild D:\lua5.1\src>cl /nologo /MD /O2 /W3 /c -I .. bit.c bit.c D:\lua5.1\src>link /nologo /DLL /export:luaopen_bit /out:bit.dll bit.obj ..\lua51.lib LINK : fatal error LNK1181: cannot open input file '..\lua51.lib' D:\lua5.1\src>if exist bit.dll.manifest mt /nologo -manifest bit.dll.manifest -outputresource:bit.dll;2 D:\lua5.1\src>del *.obj *.exp *.manifest
提示缺少lib檔案,把下載的lua5.1.lib檔案改名為lua51.lib後放到src的上級目錄,重新執行msvcbuild.bat,編譯完成。
D:\lua5.1\src>msvcbuild D:\lua5.1\src>cl /nologo /MD /O2 /W3 /c -I .. bit.c bit.c D:\lua5.1\src>link /nologo /DLL /export:luaopen_bit /out:bit.dll bit.obj ..\lua51.lib Creating library bit.lib and object bit.exp D:\lua5.1\src>if exist bit.dll.manifest mt /nologo -manifest bit.dll.manifest -outputresource:bit.dll;2 D:\lua5.1\src>del *.obj *.exp *.manifest
從https://sourceforge.net/projects/luabinaries/下載相應的原始碼、可執行檔案和庫檔案。 我用的檔案分別是:
lua-5.1.4_Win32_dll11_lib.zip(這是編譯dll檔案用的) lua-5.1.4_Win32_vc11_lib.zip(這是編譯exe檔案用的,不能用於本文) lua5_1_4_Win32_bin.zip lua5_1_4_Sources.zip
最後,把編譯出來的bit.dll放置到lua5.1.exe檔案所在目錄。上述lua檔案就能順利執行了。
D:\polycube-solver-master>\lua514\lua5.1 polycube-solver.lua problems\toy3.txt Polycube Solver 1.0 Box dimensions: 3x3x1 Pieces: 1_ 3L V_ Locked: V_ (1) Problem matrix: 26x12 。。。 D:\polycube-solver-master>\a\timer \lua514\lua5.1 polycube-solver.lua problems/soma-cube.txt >soma-res-nojit.txt
事後發現,編譯bit.dll不需要完整lua原始碼,只要有lua-5.1.4_Win32_dll11_lib.zip中的檔案就夠了,如下所示
D:\lua_dll>set include=%include%;D:\lua_dll\include D:\lua_dll>msvcbuild D:\lua_dll>cl /nologo /MD /O2 /W3 /c -I .. bit.c bit.c D:\lua_dll>link /nologo /DLL /export:luaopen_bit /out:bit.dll bit.obj ..\lua51.lib Creating library bit.lib and object bit.exp D:\lua_dll>if exist bit.dll.manifest mt /nologo -manifest bit.dll.manifest -outputresource:bit.dll;2 D:\lua_dll>del *.obj *.exp *.manifest
自己太不仔細,原來D:\polycube-solver-master\lua-win目錄下就有一個bit.dll,所以,你懂的。 而LuaJIT的原始碼中已經包含了lib_bit.c。
相關文章
- 遊戲,一個有樂趣的、解決問題的過程遊戲
- 一次線上問題的排查解決過程
- 記一次 Composer 問題的解決過程!!
- 一個儲存過程的問題!儲存過程
- oracle儲存過程!解決網友問題Oracle儲存過程
- Data Pump Import速度問題之解決過程Import
- 一個 ExpressionChangedAfterItHasBeenCheckedError 錯誤的解決過程ExpressError
- 記錄開發過程一個路由問題路由
- bang能看過來嗎,幫我解決一個問題麼
- 記錄一個前端bug的解決過程前端
- 覆盤 PHP 經典面試問題解決過程:上臺階問題PHP面試
- 運維必備-解決鎖問題的全過程運維
- 【mysql】配置MySQL,解決安裝過程中的問題MySql
- Linux使用過程中常見問題及其解決方法Linux
- 解決儲存過程擷取錯誤的問題儲存過程
- 使用javamail發信過程中的一些問題及解決方法JavaAI
- RAC安裝配置和使用過程的問題解決方法總結一
- 分享一次分析/解決支付應用效能問題的全過程
- 一個小問題的解決方案
- 解決了一個PC的問題
- 快取過程存在的三大問題及解決方案快取
- 關於 OkHttp 依賴衝突問題的解決過程HTTP
- 資料庫效能問題解決過程1例子資料庫
- HBase一次慢查詢請求的問題排查與解決過程
- chrome appcache一個問題的解決ChromeAPPPCA
- 終於,解決了一個大問題
- 4 個問題圖解瀏覽器垃圾回收的過程。圖解瀏覽器
- 用wrap加密一個package異常的解決過程加密Package
- Docker殺掉了容器?問題分析與解決過程全面覆盤Docker
- Mysql安裝過程中遇到的問題及解決辦法MySql
- Oracle ebs apache 啟動不起來的問題解決過程OracleApache
- Oracle ebs apach 啟動不起來的問題解決過程Oracle
- kodbox讀取alist檔案失敗,問題解決過程
- 記一次wordpress安裝過程中遇到的問題及解決辦法
- [貝聊科技]一個頁面阻塞問題的排查過程
- 一個標籤解決網站內容重複度過高的問題網站
- 一個案例,教你巧用DMAIC解決“大問題”!AI
- 一個關於/root/.gvfs的問題解決?