![]() |
DLL: No se encuentra punto de entrada del procedimiento...
Que tal foreros.
Un proveedor me esta entregando una dll hecha en Visual Basic 6, y me indica las funciones... Código:
Public Function Marca(telefono As String, prefijo As String) As Integer asi que yo en Delphi pongo lo siguiente.
Pero me marca el siguiente error. No se encuentra el punto de entrada del procedimiento Marca en la biblioteca de vínculos dinámicos 'C:\Archivos de programa\BAPCXSETDLL\BAPCXSETDLL.dll':eek: Segun yo todo esta bien, no se si tenga que definirse algo al compilar la dll en VB6 para que cualquier lenguaje pueda usarlo. Cuando es al reves, o sea que una dll se genere en Delphi creo que hay que ponerle stdCall para que pueda ser interpretado por todos los lenguajes. Aunque lo mas seguro es que yo este mal en algo, espero me puedan ayudar, gracias. Vicente López. |
Hola,
Creo que te falta el atributo (por decirlo de algún modo) "name" a continuación de "external", de tal modo que con él indiques el procedimiento a que quieres acceder en la DLL que tratas de enlazar. Fíjate en la siguiente declaración:
¿Lo coges? Pues prueba a ver y nos cuentas qué pasó. ;) |
Gracias DEC, en este mismo instante lo pruebo.
|
Posiblemente te estén dando gato por liebre :D
Si en la declaración external no se especifica name, entonces se asume que el nombre dado en la declaración coincide con el de la dll, y si el proveedor te dice que ese es el nombre y marca ese error, pues eso, te da gato por liebre. Sin embargo, creo recordar de mi oscuro pasado, que las dll en VB no son estándar, así que, si tal es el caso, posiblemente sólo puedas usarla en VB. // Saludos |
Bueno, y nada más para aclarar lo que comenta David; la directiva name es necesaria sólo cuando deseamos usar un nombre distinto al que tiene la dll, por ejemplo:
Aquí, estamos importando una función que originalmente se llama IsThemeActive pero que en nuestro código identificaremos como ElTemaEstaActivo. // Saludos |
Hola,
Cita:
|
nop
Nop, no funciono, me marca el siguiente error:
Código:
Project D:\project1.exe faulted with message: 'access violation at 0x77f879a1: write of address 0x00030f00'. Proces stoped. Use step o Run to continue' Uso Delphi 6. Saludos. |
Cita:
// Saludos |
Gracias Roman, ya le comente que averigue mas a fondo sobre stdCall, al parecer no lo esta usando en la DLL.
Saludos. Vicente López |
Yo de entrada le preguntaría si la dll es estándar y puedes usarla en otros lenguajes, porque si no, pues ...
// Saludos |
Cita:
Gracias. |
Cita:
// Saludos |
Efectivamente el la programo, pero no se habia presentado antes un trabajo de esta manera, accesar a sus DLL's desde otro lenguaje de programación, la solución que me esta dando es usar un OCX en lugar de la DLL, ¿que opinan?
|
Respuesta a DLL: No se encuentra punto de entrada del procedimiento
:) Hola:
El error se genera debido a que VB no puede crear DLLs estandar, VB crea ActiveX DLLs, es por eso que no es posible encontrar un punto de entrada, sin importar si es StdCall o no el paso de parámetros. Existe un lenguaje llamado Powerbasic (www.powerbasic.com), que permite hacer DLLs con sintaxis de Basic, entre otras cosas (Es un lenguaje creado por las persona que creo Turbo Basic en Borland) y yo lo he utilizado para convertir ActiveX DLLs a DLLs estandar. Tiene algunas características de Delphi, lo cual lo hacen un excelente complemento de VB, esto si es necesario que el DLL sea estandar. VB si puede llamar de manera natural un ActiveX DLL, es por eso que el DLL funciono anteriomente sin problemas a nivel de VB. La opción más simple es incorporarlo a tu proyecto como ActiveX y no como DLL. Suerte :) |
La franja horaria es GMT +2. Ahora son las 13:14:09. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi