Dll en Delphi para importar a VB NET

07/07/2005 - 17:11 por Peque | Informe spam
Hola, actualmente estoy desarrollando una aplicacion en VB nET y necesito
importar una dll desarrollada en Delphi 7.0, cuando estoy tratando de anexar
la dll a las referencias de mi proyecto, me indica un error.cual es la
manera correcta de importar una dll desarrollada en otro lenguaje a VB NET.

El error que aparece es:
"A reference to "E:\beto.dll" could not be added. This is not valid assembly
or COM component. Only assemblies with extension ".dll" andr COM components
can be referenced. Please make sure that the file is accesible, and that it
is a valid assembly or COM component"

donde "E:\beto.dll" es la dll que quiero anexar a las referencias del
proyecto.

Les agradezco la ayuda de antemano.

Preguntas similare

Leer las respuestas

#1 A.Poblacion
07/07/2005 - 17:37 | Informe spam
"Peque" wrote in message
news:
Mostrar la cita
anexar
Mostrar la cita
NET.
Mostrar la cita
assembly
Mostrar la cita
components
Mostrar la cita
it
Mostrar la cita
En las referencias del proyecto solo puedes añadir DLLs que sean de .Net
o que sean objetos COM. Para usar una DLL que solo tiene los puntos de
entrada tradicionales, tienes que declarar dentro del código fuente las
funciones de la librería mediante "Declare Function" o mediante el atributo
<DllImport>.
#2 Peque
07/07/2005 - 18:05 | Informe spam
De acuerdo, ya lo hice asitengo una forma 1 y ahi declaro una la dll como:

Declare function Prueba as lib "e:\beto.dll" as string

como debo llamarla para asignar el valor devuelto por esta funcion a un
label por ejemplo?...

El dll solo contiene una funcion, no contiene clases, es necesario tener una
clase en el dll para devolver el valor?

Gracias y Saludos.

"A.Poblacion" escribió:

Mostrar la cita
#3 A.Poblacion
07/07/2005 - 18:52 | Informe spam
"Peque" wrote in message
news:
Mostrar la cita
como:
Mostrar la cita
una
Mostrar la cita
No, en la DLL solo hace falta que se encuentre la función. Asumiendo que
la funcion se llama Prueba y que devuelve un string (¡en el formato de
.Net!), te bastaría con llamarla igual que cualquier función local del
programa en .Net:

Label1.Text = Prueba()

Si la implementación de la función en la DLL está hecha de tal forma que
se requieren conversiones de juegos de caracteres, o cambios en las
convenciones de paso de parámetros, entonces tendrás que usar la sintaxis
más sofisticada que te permite el <DllImport>, por ejemplo:

Imports System.Runtime.InteropServices
'...
<DllImport("KERNEL32.DLL", EntryPoint:="MoveFileW", SetLastError:=True, _
CharSet:=CharSet.Unicode, ExactSpelling:=True, _
CallingConvention:=CallingConvention.StdCall)> _
Public Shared Function _
MoveFile(ByVal src As String, ByVal dst As String) As Boolean
End Function

Mira en
http://msdn.microsoft.com/library/d...eclare.asp
y
http://msdn.microsoft.com/library/d...stopic.asp
#4 Tristan
07/07/2005 - 23:29 | Informe spam
Solo me gustaría añadir un detalle a lo que te ha explicado A.Poblacion.

Probablemente sea más sencillo importar una dll, creada como librería
ActiveX (COM). Si dispones del código fuente en Delphi, es inmediato
convertir tu librería en una librería activex. Solo copiar el código de la
función y cambiar el tipo de retorno y parámetros a OleVariant. En este caso
para utilizar tu función bastará con añadirla como referencia COM de tu
aplicación vb.net.

Por otro lado, si utilizas delphi.net, no tendrías que hacer nada especial.
Tan solo crear una librería .net, y utilizarla desde tu aplicación vb.net
como cualquier otra librería de cualquier lenguaje .net includo vb.net.

Juan Carlos Badiola
MVP - C#
Ads by Google
Search Busqueda sugerida