Plugins .net

Esta sección esta especialmente diseñada para todos aquellos usuarios que estés desarrollando plugins o aplicaciones y quieran ayuda para dichos plugins o aplicaciones.
Buenas, hoy hemos hecho avances buenos.

He conseguido exportar codigo .net unmanaged de modo que ams pueda llamar librerías creadas con .net, bien con c# o vb.net

Como siempre publico por aqui resultados y codigos, porque ya sabeis como va, de aqui a que vuelva a tocarlo pueden pasar semanas...

La cuestion ahora es crear unos plugins con el api que se conecten a estas librerías y que estas actuen como plugin de acciones y objetos.

Al grano, codigo:

using System;
using System.Collections.Generic;
using System.Text;
using RGiesecke.DllExport;

namespace UnmanagedExportLibrary1
{
internal static class UnmanagedExports
{
[DllExport("concat", CallingConvention = System.Runtime.InteropServices.CallingConvention.StdCall)]
static string Concat(string uno, string dos)
{
return uno + " " + dos;
}
}
}

Usando esta base http://sites.google.com/site/robertgies ... gedexports

Esto permite crear librerias dll compatibles con el sistema actual.

Como ejemplo aqui teneis la dll para probarla: http://www.zshare.net/download/88967740b1cfec14/ y un codigo fuente de uso, sencillo:
result = DLL.CallFunction("AutoPlay\\Docs\\UnmanagedExportLibrary1.dll", "concat", "\"Hola\",\"Que tal?\"", DLL_RETURN_TYPE_STRING, DLL_CALL_STDCALL);
Dialog.Message('',result)
El trabajo ahora es implementar LuaInterface, el api de lua para c# y .net en general esto dotara c# de comunicacion con el motor lua lo cual permite hacer plugins realmente funcionales y evita un problema muy jodido de intercambio de tipos de variable que tenemos con el sistema actual de dll.call(...)

hoy he estado intentando usar loadlib para pasarle como argumento a la funcion el lua state pero no ha ido demasiado bien la cosa, porque creo que en vez de el lua state creo que debo mandarle el long pointer donde se guarda en memoria dicho lua state, se puede porbar con algo asi, Lua L = new Lua(long pointer_to_lua_state)

el caso es que ademas de esta paranoia pasa una cosa con luainterface y es que una de sus assamblies (dll libreria de c#) se llama lua51.dll, justo igual que la que viene incluida por lo que tira un error, he bajado la fuente de luainterface y la he recompilado con otro nombre (lua511.dll) y ya parece funcionar, pero el metodo loadlib no ha ido del todo bien por lo que debo crear un plugin con el api normal y usar LoadLibrary() y GetProcAddress() para acceder a estas dll y hacer algun tipo de interfaz por un lado, de copypaste, y unas plantillas de desarrollo de proyectos (a lo objectwindow/less) si alguien quiere probar esto ultimo que me avise y le mando los ensamblados

veremos como va la cosa
Cada día me das más miedo pabloko, como sigas así un día vas a hacer un script que en vez de conectar con una DLL o un ActiveX, conecte con la Nasa y mande un cohete al espacio :lol:

Muy bueno el ejemplo, una pena que mi nivel de programación sea menos que básico y no me entere de nada :sorry:
eres el PUTO!!!! :num1: :num1: :num1: :num1: :num1:
Lua funcionando!! detalles en el foro de la mafia:

Código: Seleccionar todo

http://www.indigorose.com/forums/threads/32652-C-.net-Support-DLL-sdk-lua-integration?p=175783#post175783