私のゲームは Mono で使用できるようにしたいのですが、LuaInterface がぎくしゃくしているため Linux では動作しないようです (詳細については、関連する SO スレッドを参照してください)。そこの。私は独自の Lua511.LuaDLL クラスを作成して、LuaInterface で使用されるクラスを反映し、すべてのパブリック関数を lua51 のそれぞれの DllImport に置き換えました。
//For example, like this:
[DllImport("lua51")]
public static extern IntPtr luaL_newstate();
編集した LuaInterface.dll (独自の Lua511.LuaDLL をホストするようになりました)と純粋なネイティブ Win32 lua51.dll をゲームのスタートアップ フォルダーに配置すると、LuaInterface が初期化を試みると、どういうわけか DllNotFoundException が発生します。
public Lua()
{
luaState = LuaDLL.luaL_newstate(); //right there, right then.
...
もちろん、DLL がすぐそこにあるので、そうすべきではありませんよね?奇妙なことに、lua51.dll の混乱した .Net バージョンを元に戻すと、代わりに EntryPointNotFoundException が発生します。頭がおかしくなる。
それでどうしたの?
関連するソース コード: Lua511.cs、LuaInterface プロジェクトにドロップし、参照を削除して置き換えます。
編集:これを台無しにして、代替案を探すつもりです。または、自分でロールします。または、Linux の互換性を気にするのをやめてください。