在学习Lua热更新的时候,遇到了一个很小的问题,但出错缘由却很容易被忽略,从而浪费许多没必要要的时间。学习
在开始学习Lua的时候,我先是创建了一个项目,名称为LuaInterface(这个名称就是出错的罪魁祸首,由于VS会自动建立一个名称为LuaInterface的命名空间), 而后我再里面写了以下内容: ui
using System;
using LuaInterface;
namespace LuaInterface
{
public class Program
{
public Program()
{
}
static void Main(string[] args)
{
Lua luaw = new Lua();
//执行lua脚本
luaw.DoFile("Script.lua");
}
public static void staticMethod(int i, double d)
{
Console.WriteLine("静态方法");
}
public void CLRMethod()
{
Console.WriteLine("非静态方法");
}
}
public class MyClass
{
public MyClass()
{
}
}
}
复制代码
而后我又写了Script.lua脚本 lua
--require "luanet"
--加载CLR的类型
luanet.load_assembly("LuaInterface")
Program = luanet.import_type("LuaInterface.Program")
--实例化CLR对象
program = Program()
program:CLRMethod()
复制代码
而后ctrl+f5运行程序,却报以下错误。 spa
通过查找发现是命名空间冲突致使,Lua与C#交互须要用到LuaInterface.dll,而此处又定义了LuaInterface命名空间,形成冲突。 code
这里须要将LuaInterface命名空间间换为其余名称,而后右键点击项目,选择属性 cdn