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:
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.




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>.
Respuesta Responder a este mensaje
#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ó:

"Peque" wrote in message
news:
> 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.


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>.



Respuesta Responder a este mensaje
#3 A.Poblacion
07/07/2005 - 18:52 | Informe spam
"Peque" wrote in message
news:

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?



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
Respuesta Responder a este mensaje
#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#
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida