3

私のゲームは 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 の互換性を気にするのをやめてください。

4

2 に答える 2

1

AFAIK mono は、デフォルトで Linux のネイティブ ライブラリに.so 拡張子を使用します。

lua51.dll の名前を lua51.so に変更するか、DllImport 属性の dllname を変更してみてください。または、dllmap を使用します。

于 2009-10-18T14:19:34.637 に答える