2009-10-07 30 views
5

Khi tôi cố gắng sử dụng LuaInterface trên Mono trên Linux (sử dụng Mono 2.0 trên Ubuntu 9,04) Tôi nhận được ngoại lệ sau đây:Làm thế nào để sử dụng LuaInterface trên 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. 

Theo this web site LuaInterface thể được được sử dụng với Mono. MoMA cũng nói vậy.

Có thể biên dịch lại lua51.dll để làm cho nó tương thích với Mono không?

Trả lời

6

LuaInterface trông tinh khiết C#, nhưng nó sử dụng chế độ hỗn hợp Phiên bản C++/CLI-ified của phiên bản Windows của thư viện Lua gốc, kết hợp mã .NEt và mã Windows 32 bit gốc. Không có trình biên dịch C++/CLI cho các nền tảng khác Windows, vì vậy bạn không thể chuyển/biên dịch lại mã C++/CLI, mặc dù nó sẽ hoạt động trên Mono trên Win32 (hoặc có thể là Wine) ..

Cách duy nhất thực sự khả thi để có được điều này để làm việc trên Mono sẽ là làm cho nó sử dụng P/Invokes istead của C++/CLI. Sau đó, bạn có thể sử dụng một dllmap để khi Mono cố gắng giải quyết P/Gọi các cuộc gọi đến lua51.dll, nó được chuyển hướng đến tương đương Linux, liblua.so.5.1.

+0

Vấn đề là lua51.dll không sử dụng DLLImport(), nhưng biên dịch mã Lua không được quản lý trực tiếp vào thư viện được quản lý này. – ulrichb

+0

Rất tiếc, nên xem xét kỹ chế độ LuaInterface. Chỉnh sửa để làm cho nó chính xác. –

+0

Điều này không có vẻ tốt, vì http://luainterface.googlecode.com/svn/trunk/lua-5.1.2/lua511/LuaDLL.cpp dường như làm rất nhiều "ma thuật", ... Và, .... TẠI SAO không có trình biên dịch C++/CLI hỗn hợp ??? – ulrichb

6

Phiên bản cũ hơn của LuaInterface sử dụng trình bao bọc P/Invoke thuần túy. Bạn có thể sử dụng nó.

Ngoài ra còn có một vài nỗ lực thay thế, bao gồm của riêng tôi. http://github.com/jsimmons/LuaSharp

Các vấn đề liên quan