如何在不同目录中使用NLua动态加载CSharp dll?

时间:2019-06-24 10:20:51

标签: nlua

嗨,我对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')。


请告诉我该怎么办?

0 个答案:

没有答案