2009-10-07 20 views
5

Wenn ich versuche, LuaInterface auf Mono unter Linux zu verwenden (mit Mono 2.0 auf Ubuntu 9.04) ich die folgende Ausnahme erhalten:Wie LuaInterface auf Mono/Linux verwenden

 
** (App.exe:8599): WARNING **: Method ':.DoDllLanguageSupportValidation()' in assembly 
'/home/ulrich/test/Debug/lua51.dll' contains native code that cannot 
be executed by Mono on this platform. 
The assembly was probably created using C++/CLI. 

Nach this web site LuaInterface kann sein verwendet mit Mono. MoMA sagt das auch.

Ist es möglich, lua51.dll zu rekompilieren, damit es kompatibel zu Mono ist?

Antwort

6

LuaInterface sieht reine C# sein, aber es wird eine gemischter Modus C++/CLI-ified Version der Windows-Version der nativen Bibliothek Lua, die .NET-Code und native 32-Bit-Windows-Code mischt. Es gibt keinen C++/CLI-Compiler für andere Plattformen als Windows, daher können Sie den C++/CLI-Code nicht portieren/neu kompilieren, obwohl er unter Win32 (oder vielleicht Wine) funktionieren sollte.

Der einzige wirklich gangbare Weg um dies auf Mono zu bearbeiten, würde es P/Invokes anstelle von C++/CLI verwenden. Sie könnten dann eine dllmap verwenden, so dass, wenn Mono versucht, die P/Invoke-Aufrufe von lua51.dll aufzulösen, es zu dem Linux-Äquivalent liblua.so.5.1 umgeleitet wird.

+0

Das Problem ist, dass lua51.dll DLLImport() nicht verwendet, aber kompiliert den nicht verwalteten Lua-Code direkt in diese verwaltete Bibliothek. – ulrichb

+0

Hoppla, sollte den LuaInterface-Modus sorgfältig betrachtet haben. Bearbeitet, um es richtig zu machen. –

+0

Das klingt nicht gut, denn die http://luainterface.googlecode.com/svn/trunk/lua-5.1.2/lua511/LuaDLL.cpp scheint eine Menge "Magie" zu machen, ... Und, .... WARUM gibt es keinen gemischten C++/CLI-Compiler ??? – ulrichb

6

Ältere Versionen von LuaInterface verwenden einen reinen P/Invoke-Wrapper. Du könntest das benutzen.

Es gibt auch ein paar Versuche für Alternativen, meine eigenen enthalten. http://github.com/jsimmons/LuaSharp