2009-10-07 10 views
5

Kiedy próbuję użyć LuaInterface na Mono na Linux (przy użyciu Mono 2.0 na Ubuntu 9.04) pojawia się następujący wyjątek:Jak korzystać LuaInterface na Mono/Linux

 
** (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. 

według this web site LuaInterface może być używane z Mono. MoMA mówi to również.

Czy jest możliwa ponowna kompilacja lua51.dll, aby była kompatybilna z Mono?

Odpowiedz

6

LuaInterface wydaje się być czystym C#, ale używa mieszanego trybu C++/CLI-owanej wersji wersji Windows natywnej biblioteki Lua, która łączy. NOWY kod i natywny 32-bitowy kod Windows. Nie ma kompilatora C++/CLI dla platform innych niż Windows, więc nie można przesłać/przekompilować kodu C++/CLI, ale powinien działać na Mono na Win32 (lub może Wine) ..

Jedyny naprawdę opłacalny sposób aby to działało na Mono, byłoby użycie P/Invokes istead z C++/CLI. Następnie można użyć wartości dllmap, więc gdy Mono spróbuje rozwiązać wywołania P/Invoke do lua51.dll, zostanie przekierowany do odpowiednika Linuksa, liblua.so.5.1.

+0

Problem polega na tym, że lua51.dll nie używa DLLImport(), ale kompiluje niezarządzany kod Lua bezpośrednio do tej zarządzanej biblioteki. – ulrichb

+0

Ups, powinien wyglądać ostrożnie w trybie LuaInterface. Edytowane w celu poprawienia. –

+0

To nie brzmi dobrze, ponieważ http://luainterface.googlecode.com/svn/trunk/lua-5.1.2/lua511/LuaDLL.cpp wydaje się robić dużo "magii", ... .... DLACZEGO nie ma żadnego mieszanego kompilatora C++/CLI ??? – ulrichb