Stiamo facendo un progetto in .NET framework e vogliamo rendere disponibili la maggior parte delle sue funzionalità in seguito per gli script Lua. Ho pensato di compilare una DLL e caricarla su Lua con l'aiuto di LuaInterface. Ma in qualche modo non ha funzionato.Come creare una dll .NET personalizzata caricabile per Lua (per Windows)?
Che cosa ha fatto il lavoro è la seguente:
require 'luanet'
luanet.load_assembly("System.Windows.Forms")
Form = luanet.import_type("System.Windows.Forms.Form")
Button = luanet.import_type("System.Windows.Forms.Button")
form1 = Form()
button1 = Button()
Come puoi vedere, qui mi sto caricando assemblaggio standard e tipi, che non ha causato molto problema. Tuttavia, se ho il mio dll 'LuaTest' compilato sotto .NET 4.0 e provo a caricarlo in LUA. Non ha funzionato. Ho scritto qualcosa di simile,
require 'luanet'
luanet.load_assembly("LuaTest")
PlanetarySystem = luanet.import_type("LuaTest.PlanetarySystem")
solarSystem = PlanetarySystem()
dove 'PlanetarySystem' è una classe in LuaTest. Se eseguo questa parte di codice, l'interprete direbbe: tenta di chiamare "PlanetarySystem" globale (un valore nullo).
Ho provato anche un altro modo per caricare la DLL:
package.path = package.path .. ";" .. "/?.dll"
require 'luanet'
require 'LuaTest'
Dopo corsa, l'interprete getta: lua: errore di caricamento del modulo 'LuaTest' dal file '\ LuaTest.dll.': La procedura specificata potrebbe non essere trovato
Sono piuttosto un principiante di .NET framework e LuaInterface. Forse ho fatto qualcosa di completamente sbagliato. Per favore aiutami su questo. Grazie molto!
Modifica: Forse dovrei avere un "Punto di ingresso" per Lua nella mia DLL per indicare che questa DLL è caricabile LUA ???
Modifica: Lua non LUA. Senza offesa alle persone che parlano portoghese. Il Lunanet che sto usando deve essere compatibile con .NET 4.0, altrimenti il primo pezzo di codice non funzionerebbe.
Lua è un nome proprio, non un acronimo. È Lua, non LUA. –
è la tua build Luanet compatibile con .Net 4.0? –