DLL en .net

Post Reply
pcordonet
Posts: 110
Joined: Sat Jan 30, 2010 8:35 am
Location: Girona

DLL en .net

Post 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.
User avatar
wmormar
Posts: 1050
Joined: Fri Oct 07, 2005 10:41 pm
Location: México
Contact:

Re: DLL en .net

Post by wmormar »

pcordonet,

Es posible, nosotros lo hacemos sin problema
William, Morales
Saludos

méxico.sureste
User avatar
Antonio Linares
Site Admin
Posts: 37481
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain
Contact:

Re: DLL en .net

Post 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/
regards, saludos

Antonio Linares
www.fivetechsoft.com
pcordonet
Posts: 110
Joined: Sat Jan 30, 2010 8:35 am
Location: Girona

Re: DLL en .net

Post 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
User avatar
Antonio Linares
Site Admin
Posts: 37481
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain
Contact:

Re: DLL en .net

Post by Antonio Linares »

Pere,

Revisa este simple diagrama que sintetiza como funciona FIveNet:

https://code.google.com/p/fivenet/wiki/architecture
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
wmormar
Posts: 1050
Joined: Fri Oct 07, 2005 10:41 pm
Location: México
Contact:

Re: DLL en .net

Post 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?
William, Morales
Saludos

méxico.sureste
User avatar
Antonio Linares
Site Admin
Posts: 37481
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain
Contact:

Re: DLL en .net

Post by Antonio Linares »

Yo pensé que se referia a usar una DLL programada (hecha en .NET) para ser usada desde .NET
regards, saludos

Antonio Linares
www.fivetechsoft.com
pcordonet
Posts: 110
Joined: Sat Jan 30, 2010 8:35 am
Location: Girona

Re: DLL en .net

Post 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
User avatar
Antonio Linares
Site Admin
Posts: 37481
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain
Contact:

Re: DLL en .net

Post 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 :-)
regards, saludos

Antonio Linares
www.fivetechsoft.com
Post Reply