Eric Tetz |
|
在張貼完 CreatingBinaryExtensionModules 之後我立即發現類似的 BinaryModuleTutorial。不過該教學課程並未討論 Lua API 常式位於何處的問題。如果它們已靜態連結至主機應用程式,則延伸無法使用它們(除非寫入主機以傳遞函式指標給 DLL,也就是「載入函式庫」範疇以外的機制)。因此 DLL 必須靜態連結至它自己的 Lua API 常式副本。假設 Lua API 使用任何靜態變數(我不清楚它是否會使用),則主機和延伸會有個別的副本,而且可能會造成嚴重問題。
不過,由於 BinaryModuleTutorial 中未提及此問題,這似乎表示 Lua 並未使用任何靜態資料,而且如其中所述建立模組實際上可行。它只會浪費空間,因為每個延伸模組都包含了整個 Lua API 的副本。