Tag: luainterface

如何为Lua(forWindows)创建可加载的自定义.NET DLL?

我们正在.NET框架中进行一个项目,并希望以后为Lua脚本提供大部分function。 我以为我可以编译一个DLL并在LuaInterface的帮助下将其加载到Lua脚本。 但不知怎的,它没有用。 DID的工作原理如下: 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() 如您所见,这里我正在加载标准assembly和类型,这不会造成太大问题。 但是,如果我在.NET 4.0下编译自己的dll’LuaTest’并尝试在LUA中加载它。 那没起效。 我写了类似的东西, require ‘luanet’ luanet.load_assembly(“LuaTest”) PlanetarySystem = luanet.import_type(“LuaTest.PlanetarySystem”) solarSystem = PlanetarySystem() 其中’PlanetarySystem’是LuaTest中的一个类。 如果我运行这段代码,解释器会说:尝试调用全局’PlanetarySystem’(一个零值)。 我还尝试了另一种加载DLL的方法: package.path = package.path .. “;” .. “/?.dll” require ‘luanet’ require ‘LuaTest’ 运行后,解释器抛出:lua:从文件’。\ LuaTest.dll’加载模块’LuaTest’时出错:找不到指定的过程。 我是.NET框架和LuaInterface的新手。 也许我做了一件完全错误的事情。 请帮帮我。 非常感谢! 编辑:也许我应该在我的dll中有一个Lua的“入口点”来表明这个dll是LUA可加载的??? 编辑:Lua不是LUA。 […]

将C#集合传递回Lua

我有一个用C#编写的DLL,由Lua脚本使用。 脚本“需要CLRPackage”。 到目前为止,我可以使用load_assembly()和import_type()来获取DLL中的类和方法。 我传回简单的值和字符串,这一切都有效。 不,我需要将一个通用集合传递给Lua。 我相信Lua会看到的是一个表,但我不清楚如何在C#中创建该表并将其传回。 这似乎是一个类似的问题,但我没有看到如何实现它。 是否有另一种解决方案或一个带有剥离代码片段的解决方案?

LuaInterface – 如何限制对.Net类的访问?

我正在尝试使用LuaInterface 2.0.3在我的C#应用​​程序中嵌入一些Lua脚本function。 到目前为止,这工作正常,但我无法弄清楚如何限制只访问少数指定的.Net类。 默认情况下,所有.Net库都可以通过“luanet”直接访问,Lua脚本可以自由打开新窗口或访问文件系统。 例如,这个Lua脚本将打开一个新窗口: Form = luanet.System.Windows.Forms.Form mainForm = Form() mainForm:ShowDialog() 编写脚本的自由度很高,但这可能会干扰托管应用程序,并且具有一些我不太喜欢的与安全相关的含义。 有没有办法禁用它?

在.net4中加载LuaInterface

我有一个我正在研究的C#应用​​程序,我想使用优秀的LuaInterface 。 但是,当我运行应用程序时,当我尝试使用LuaInterface执行某些操作时,我得到此exception: 混合模式程序集是针对运行时的版本“v2.0.50727”构建的,如果没有其他配置信息,则无法在4.0运行时中加载。 我可以提供哪些额外的配置信息来正确加载?

C#外部库(Lua)调用问题

我是C#(VS2010).Net(4.0)编程的新手,我遇到了自从几天以来我自己无法解决的问题。 我在我的C#代码中使用外部脚本语言(Lua)。 为此,我使用为.Net 4.0构建的LuaInterpreter 首先尝试:该项目是一个控制台应用程序 – >当我尝试调用Lua类时,程序运行正常。 第二次尝试:该项目是一个从Excel中使用的类Librrary COM – >类库编译正常,我的用户定义函数在Excel中正常工作。 但当我试图打电话给Lua课时,它崩溃说Lua集会失踪了。 Could not load file or assembly ‘lua51, Version=0.0.0.0, Culture=neutral, PublicKeyToken=1e1fb15b02227b8a’ or one of its dependencies. Strong name validation failed. (Exception from HRESULT: 0x8013141A) 重现问题: 1-您需要从http://www.mdome.org/2011/05/16/luainterface-for-csharp-net-4-custom-build/获取LuaInterface .Net 4.0 2-添加LuaInterface作为项目中的参考 3-将Lua51 DLL复制到建筑目录中(我也将Excel表格放在那里) 4-复制类库的代码 using System; using System.Collections.Generic; using System.Runtime.InteropServices; using Microsoft.Win32; using Excel = Microsoft.Office.Interop.Excel; […]