Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   .NET (https://www.clubdelphi.com/foros/forumdisplay.php?f=17)
-   -   Pueden invocarse DLLs creados con .NET desde aplicativos Delphi que no sean .NET ? (https://www.clubdelphi.com/foros/showthread.php?t=51129)

rolandoj 06-12-2007 05:07:53

Pueden invocarse DLLs creados con .NET desde aplicativos Delphi que no sean .NET ?
 
Hola,

Espero que puedan ayudarme. Nunca he trabajado con .NET y no sé casi nada del tema; pero, para un problema en particular causado por un error conocido del propio Microsoft,la única solución razonable que dan involucra usar algo de .NET.

Como mi aplicación es Win32, o habrá que renunciar a una característica que venía funcionando muy bien, o habrá que establecer una pequeña interfase.

Para saber si vale la pena investigar la segunda opción, les tengo estas preguntas:

Es posible escribir una DLL con .NET que exporte una función, de forma que pueda ser invocada por una aplicación escrita en una versión de Delphi que no sea para .NET ?

Si no es posible, hay alguna forma de importar una librería de clases de .NET a una versión de Delphi que no sea para .NET ?

En ambos casos, de poder hacerse, se pueden obtener en forma 100% binaria de manera que no sea necesario montar en los clientes la plataforma de .NET usualmente requerida para ejecución (entiendo que es el framework). ?

Gracias por la atención

poliburro 06-12-2007 21:57:15

Cita:

Empezado por rolandoj (Mensaje 250890)
Hola,

Espero que puedan ayudarme. Nunca he trabajado con .NET y no sé casi nada del tema; pero, para un problema en particular causado por un error conocido del propio Microsoft,la única solución razonable que dan involucra usar algo de .NET.

Como mi aplicación es Win32, o habrá que renunciar a una característica que venía funcionando muy bien, o habrá que establecer una pequeña interfase.

Para saber si vale la pena investigar la segunda opción, les tengo estas preguntas:

Es posible escribir una DLL con .NET que exporte una función, de forma que pueda ser invocada por una aplicación escrita en una versión de Delphi que no sea para .NET ?

Si no es posible, hay alguna forma de importar una librería de clases de .NET a una versión de Delphi que no sea para .NET ?

En ambos casos, de poder hacerse, se pueden obtener en forma 100% binaria de manera que no sea necesario montar en los clientes la plataforma de .NET usualmente requerida para ejecución (entiendo que es el framework). ?

Gracias por la atención


Es posible invocar desde Delphi para win32 (Caso específico delphi 7), librerias escritas en C#. La manera de hacerlo la encontrarás en el libro: Mastering delphi 7 de marco cantú. editorial Sibex

rolandoj 10-12-2007 16:32:34

Gracias. Comentarios y duda
 
Cita:

Empezado por poliburro (Mensaje 251053)
Es posible invocar desde Delphi para win32 (Caso específico delphi 7), librerias escritas en C#. La manera de hacerlo la encontrarás en el libro: Mastering delphi 7 de marco cantú. editorial Sibex

Hola,

Gracias por la información. He estado buscando el libro; pero no lo he encontrado en las librerías de la ciudad y dudo que esté disponible en mi país. De todas formas hoy haré un último intento. He visto que lo ofrecen en Internet en www.amazon.com; pero esa vía tomaría mucho tiempo y la decisión de como superar el problema ya tenemos que tomarla.

Por otro lado, con la ayuda de un amigo hemos logrado generar la DLL de .NET requerida. Aún no hemos conseguído invocarla desde Delphi; sin embargo, con la documentación que hemos hallado y las pruebas que hemos hecho, todo indica que no se puede generar independiente; es decir, tocaría montar en cada equipo todo el soporte .NET. En pocas palabras, que no sería una buena solución.

Así las cosas, la decisión que se está a punto de tomar es irnos con la otra solución que plantea Microsoft que implica montar un software adicional en cada cliente. Es una mala solución; pero sería esencialmente lo mismo que lo que hasta ahora hemos encontrado, con la ventaja de ser más simple y más seguro (entre otras cosas porque tenemos Delphi 5, no Delphi 7).

De todas formas, podría alguién confirmarme si la solución "ideal" (bajo las condiciones de Microsoft), tener un DLL independiente que pueda invocarse desde Delphi sin que el cliente requiera la plataforma .NET instalada, es posible ?

Gracias

__hector 11-12-2007 20:22:44

Quizas compilando .NET a codigo de maquina en vez de msil (usando ngen o algo parecido) te pueda ayudar, al no requerir el framework para ejecutarse. Ahora bien, no he probado ngen, y no se si funciona para librerias o solo para ejecutables.

He visto alguna vez las interfases entre .NET y Win32 y no me parecen simples de realizar. De todas formas, prueba por ahi y dinos que tal te fue.

Suerte!

mamcx 11-12-2007 20:32:35

Claro que se puede. Es una de las cosas "magicas" que se hacen con Delphi.

Las versiondes de Delphi 2005+ tiene la opcion de cargar directamente, pero de resto hay que usar varios trucos.

El mas basico es Interop:

http://www.blong.com/Conferences/Bor...nterop.htm#CCW

Y el otro es p-invoke inverso:

http://hallvards.blogspot.com/2007/1...oke-magic.html

rolandoj 13-12-2007 15:56:00

Gracias. Probaré
 
Hola,

Gracias por las ideas. Ahora mismo estoy muy ocupado con otros temas; pero probaré y les comentaré, a más tardar la semana entrante


La franja horaria es GMT +2. Ahora son las 08:44:11.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi