Mac下 lua C模組的編寫

2021-07-02 07:04:47 字數 1010 閱讀 4184

我們已經看到如何在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"

)print

(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 ...