我們已經看到如何在c檔案中使用lua_register註冊lua可以使用的函式,也了解了c函式和lua函式之間如何傳遞引數。再提公升一步,我們還可以將一組c函式組成乙個模組交給lua環境使用。看具體的例子:
mylualib.c
#include
#include
#include
static int hello_c (lua_state *l)
static const struct lual_reg mylualib =
,/* sentinel */}
;int luaopen_mylualib (lua_state *l)
需要說明的是mac os x需要使用gcc將mylualib.c編譯為動態庫,編譯選項不同於linux。
具體編譯命令(粗體部分不同於linux,如果不使用這些選項,liblua將會被編譯到so檔案中並引起「multiple lua vms detected」錯誤, bundle是mac使用的檔案格式):
gcc -c mylualib.c -i/usr/local/cellar/lua/5.2.3_1/include
gcc -o2 -bundle -undefined dynamic_lookup -o mylualib.so mylualib.o
生成的mylualib.so就是可以在lua環境使用的模組。
再看一下lua指令碼引用mylualib模組的的方法:
my.lua
require "mylualib"
hi = mylualib.hello_c(
"hi c, i'm lua"
(hi)
檔案第1行的作用就是引用mylualib模組。
最後看一下lua指令碼執行的結果:
$ lua my.lua
lua: hi c, i'm lua
hi lua, nice to meet you
[註明:lua版本是5.2.1]
來自於:
MAC 下編寫opengl3 程式
最近在mac和windows兩邊寫opengl 但由於mac原本只支援2.1,所以兩邊寫不同的語法,讓我很苦惱,而且在mac上無法學習一些較新的教程,在搜尋了和踩了一些坑之後,終於實現在mac上編寫opengl 3 程式.osx對於gl 2.1以上只支援core profile.glfw支援建立co...
windows下嘗試編寫node模組
1,首先參考寫了乙個模組 2,按照指引執行 f program files nodejs mymodule node gyp configure build 奶奶的,一開始就少了乙個node gyp,上網一艘,原來這也是乙個模組 node gyp 不是內部或外部命令,也不是可執行的程式 或批處理檔案...
測試模組的編寫
比起寫好所有的程式後整體除錯,單元測試顯示了它的優勢,比如在深度學習的 中,比較重要的兩大塊是 資料集模組 網路結構模組。pytorch中,寫好資料集模組時,會測試 getitem 功能,這個時候可以用到unittest和ipython。以下時今天寫的要給關於眼底的資料集測試 import sys ...