Привет have У меня вопрос по импорту 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.")
Произошла ошибка: попытка индексировать нулевое значение (глобальное «MyLibrary»).
Подскажите пожалуйста что делать?