Depuis mon jeu, que je voudrais vraiment être mono-utilisable, ne semble pas fonctionner sous Linux parce LuaInterface est d'être une secousse (voir le the relevant SO thread pour plus sur cela), j'ai décidé de faire ce qui il a suggéré . J'ai écrit ma propre classe Lua511.LuaDLL pour refléter celui utilisé par LuaInterface, en remplaçant chaque fonction publique avec son DllImport respective de lua51:DllNotFoundException en essayant de "réparer" LuaInterface, mais pourquoi?
//For example, like this:
[DllImport("lua51")]
public static extern IntPtr luaL_newstate();
Avec l'édition LuaInterface.dll (qui accueille désormais sa propre Lua511.LuaDLL) et un lua51.dll Win32 pur, natif dans le dossier de démarrage de mon jeu, je reçois un DllNotFoundException en quelque sorte quand essaie de LuaInterface initialize:
public Lua()
{
luaState = LuaDLL.luaL_newstate(); //right there, right then.
...
Ofcourse, avec la DLL là, il ne devrait pas le faire, à droite ? Bizarrement, remettre la version .Net de lua51.dll à la place donne une EntryPointNotFoundException à la place. L'esprit boggle.
Alors, qu'est-ce qui se passe avec ça?
Code source pertinent: Lua511.cs, l'a supprimé dans le projet LuaInterface, puis supprimé la référence afin qu'elle soit remplacée.
Editer: Vis ça, je vais chercher des alternatives. Ou roule le mien. Ou arrêtez de vous soucier de la compatibilité avec Linux. mono
Très impressionnant. Je vais devoir vérifier ça plus tard aujourd'hui ... – Kawa