Page 1 of 1

DLL en .net

PostPosted: Tue Jun 18, 2013 10:51 am
by pcordonet
Hola Antonio,


Recientemente, me ha salido un proyecto para conectar mi software (xharbour profesional) con una dll en .NET.

Es posible, cargar la dll i utilizar los objetos al estilo activex?

Hace tiempo , vi como accedías a código .NET

Muchas gracias.
Pere Cordonet.

Re: DLL en .net

PostPosted: Tue Jun 18, 2013 5:25 pm
by wmormar
pcordonet,

Es posible, nosotros lo hacemos sin problema

Re: DLL en .net

PostPosted: Tue Jun 18, 2013 5:38 pm
by Antonio Linares
Pere,

No he visto la forma en la que William lo hace, seguro será interesante de revisar :-)

Yo publiqué FiveNet en donde explico y muestro el código de como lo hice:
https://code.google.com/p/fivenet/

Re: DLL en .net

PostPosted: Tue Jun 18, 2013 6:52 pm
by pcordonet
Hola wmormar.

Muchas gracias por responder.

Serias tan amable de hacer un ejemplo?

Estoy muy pedido, ya no se que hacer.

Antonio, he visto el proyecto, veo que generas codigo c# pero, como lo haces para compilar? y despues para que este dentro del ejecutable.

Estas utilizando borland, y yo estoy utilizando xbuildw.exe

No se por donde empezar.


Pere Cordonet

Re: DLL en .net

PostPosted: Tue Jun 18, 2013 6:57 pm
by Antonio Linares
Pere,

Revisa este simple diagrama que sintetiza como funciona FIveNet:

https://code.google.com/p/fivenet/wiki/architecture

Re: DLL en .net

PostPosted: Tue Jun 18, 2013 7:04 pm
by wmormar
Antonio, Pere,

Lei mal? , decia usar la DLL .NET como activex, nosotros usamos la DLL como activex con OLE. Sin problemas. Será que a eso te referias?

Re: DLL en .net

PostPosted: Tue Jun 18, 2013 7:07 pm
by Antonio Linares
Yo pensé que se referia a usar una DLL programada (hecha en .NET) para ser usada desde .NET

Re: DLL en .net

PostPosted: Tue Jun 18, 2013 7:18 pm
by pcordonet
Hola a los dos,

Me refiero una DLL hecha en .NET i utilizar-la dentro de xharbour Comercial.

He probado de hacer un DLL2LIB pero no funciona, da un error.

He probado de regasm para generar el objeto en el registro i utilizar-lo como OLE y también me da error.

Muchas gracias, por su tiempo.
Espero encontrar alguna solucion.

La unica opción que veo factible, es , crear un proyecto con visual c++ y hacer un import de la DLL. (Aqui si que veo las classes, funciones, metodos, ... )

Que opinais?

Pere

Re: DLL en .net

PostPosted: Tue Jun 18, 2013 7:29 pm
by Antonio Linares
Pere,

una DLL hecha en .NET no puede ser usada desde una aplicación en xharbour (ó harbour) puesto que necesita del runtime de .NET y Microsoft tiene bloqueados que programas en C (Harbour es un programa en C) accedan a .NET, porque precisamente .NET quiere evitar eso, inseguridad en el código, y que solo se ejecute .NET

Como se puede saltar esa limitación ? Eso es lo que hace FiveNet :-)

La idea es sencilla: Tu haces un pequeño programa en C# (todos los Windows actuales llevan incluido por defecto el compilador de C#. En el build de FiveNet se muestra como usarlo desde el MsDos) y ese programa tuyo SI usa la DLL en .NET. Luego ese programa tuyo en C# se convierte en un servidor COM y entonces SI puede ser usado desde Harbour :-)

Finalmente, si necesitas pasar información de un evento de .NET a la aplicación en Harbour, tienes que hacer el camino contrario, gracias a que desde una aplicación en .NET si se puede acceder a una aplicación en C que será la que accede a Harbour puesto que una DLL y todo lo que la DLL use, usan la misma pila (stack) internamente.

La idea es simple, aunque parezca un tanto enrevesada, y lo importante es que funciona :-)