Lua与C#交互问题

前言

  在学习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

alt
错误信息

  通过查找发现是命名空间冲突致使,Lua与C#交互须要用到LuaInterface.dll,而此处又定义了LuaInterface命名空间,形成冲突。   code

问题解决

  这里须要将LuaInterface命名空间间换为其余名称,而后右键点击项目,选择属性 cdn

  而后将程序集名称和默认命名空间换为新的命名空间名称后保存便可。
   若lua想要访问其余的自定义命名空间,都须要将此处的程序集名称和默认命名空间换为lua想要访问的命名空间的名称,不然坏事会出现上述错误。
相关文章
相关标签/搜索