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想要訪問的命名空間的名稱,不然壞事會出現上述錯誤。
相關文章
相關標籤/搜索