嗨,我对NLua导入.NET程序集有疑问。
我希望在运行程序时根据需要动态加载CSharp dll文件。
我的NLuaConsoleApp程序没有直接引用MyLibrary类库。
这是NLuaConsoleApp.exe代码:
using NLua;
using System;
using System.Text;<br>
namespace NLuaConsoleApp
{
class Program
{
static void Main(string[] args)
{
try
{
Lua lua = new Lua();
lua.LoadCLRPackage();
//Provide current directory path
lua["gloDir"] = AppDomain.CurrentDomain.BaseDirectory;
//Run the Demo.lua script
lua.DoFile(AppDomain.CurrentDomain.BaseDirectory + "Demo.lua");
Console.WriteLine("Compeleted!");
Console.ReadKey();
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
Console.ReadKey();
}
}
}
}
这是MyLibrary.dll代码:
using System;
namespace MyLibrary
{
public class MyLibrary
{
//Show a message
public static void ShowMsg(string msg)
{
Console.WriteLine(msg);
}
}
}
如果我的目录结构为:
project\NLuaConsoleApp.exe
project\Demo.lua
project\MyLibrary.dll
和Demo.lua代码:
--reference .\MyLibrary.dll
import ("MyLibrary", "MyLibrary")
MyLibrary.ShowMsg("Lua call ShowMsg.")
此Demo.lua代码成功运行。
如果我更改目录结构将是:
project\NLuaConsoleApp.exe
project\Demo.lua
project\exp\MyLibrary.dll
并更改Demo.lua代码:
--reference .\exp\MyLibrary.dll
import (".\\exp\\MyLibrary", "MyLibrary")
MyLibrary.ShowMsg("Lua call ShowMsg.")
发生错误:尝试索引nil值(全局'MyLibrary')。
请告诉我该怎么办?