PDA

Ver la Versión Completa : Comunicación con funciones de una dll


walace_soy
05-10-2004, 13:09:25
Hola, tenemos Delphi 6 y nos han enviado una dll que esta hecha en Visual Basic .NET.

Hacemos las llamadas como las hacemos siempre y no conseguimos que ejecute, nos da errores de memoria, alguien ha tenido este problema?, hay que hacer algo especial para utilizar en Delphi 6, una funcion que esta en una dll que esta hecha con visual basic.NET.

Si alguien puede ayudarme se lo agradeceria.

mamcx
05-10-2004, 22:38:17
Lo que haces, no se hace!

La dll es .NET, igual= una DLL de objetos en managed code. Necesitas es que te la pasen como un objeto COM, o usar D7 (*creo* que D7 permite llamar assemblys en .NET? o se me cruzaron los cables con lo nuevo de D9?)

En ultimas, la facil es que te la pasen como objeto COM..

__hector
06-10-2004, 02:51:07
pues si, creo que si se hace. Se necesita un wrapper de win32 (com) al assembly de net. La verdad nunca nunca lo he hecho, pero si buscamos en la red podemos encontrar algunas referencias (no parece ser simple, pero tampoco complicado):

http://www.blong.com/Conferences/BorCon2004/Interop2/COMNetInterop.htm#CCW

http://www.blong.com/Conferences/BorConUK2002/Interop1/Win32AndDotNetInterop.htm#InversePInvoke

Suerte!

walace_soy
07-10-2004, 09:06:04
Buenas, gracias a los que habeis contestado algo, pero tengo un problema, me acabo de dar cuenta que soy muy simple y la verdad no he entendido la mitad de las cosas que me habeis dicho.

Alguien podria simplificarlo y poner un ejemplo de codigo fuente???? vamos es que soy muy lerdo o vosotros mu tecnicos.

Gracias.

__hector
07-10-2004, 16:27:05
Algo simple: no hay forma de que hagas eso que pretendes, sino quieres enredarte con algo complejo. Lamentablemente (y por suerte) una dll de .NET (assembly) no se parece en absoluto a lo que estabamos acostumbrados en Win32. Segun pudiste leer en uno de los enlaces que te pase, no es sino un lio lograr esa interaccion, se trata de exportar metodos, desensamblar/reensamblar la dll para poder utilizarla en aplicaciones Win32.

Piensa que una tiene los odiosos HRESULTS, P/Invoke y tipos de datos que no coinciden (quien ha intentado manejar un arreglo de variants de VB6 en delphi, como un arreglo?? Nunca lo he logrado) que vienen de win32 (por eso en las importaciones de dll externas en delphi tienes que especificar el metodo de importacion: stdcall, safecall, pascal, cdecl y otras que aparecen en la ayuda de delphi)

En NET todo eso viene resuelto: cada lenguaje tiene que implementar y regirse por el CLI y el CLS (Common Language Interface y Specification respectivamente), y el intercambio entre assemblies es: un ketchup.

mamcx
07-10-2004, 20:49:39
Lo simple es que te TIENEN que pasar la DLL de .NET en COM/ActiveX (o sea que se pueda crear con CreateOleObject() y eso es todo...