PDA

Ver la Versión Completa : DLL stdcall external


marilinspi
19-11-2013, 21:12:29
hola a todos, quiero llamar una DLL y asi declaro la funcion

function Contacta(Ruta:String; Serie:String; Empresa:String; Servidor:String):Boolean ; stdcall; external 'ConexionExterna.dll' name 'Inicializar';

pero no me compila, el problema lo tiene con la palabra External, si yo quito esa parte compila sino no, me estará faltando declarar algo, o registrar, el error que me da es 'definición de campo no se permite después de los métodos o propiedades'

cualquier dato que me puedan dar me va a ayudar, gracias desde ya.

ElKurgan
20-11-2013, 08:03:30
Asi, tal como la has puesto, a mi me compila perfectamente.

¿No estará el error en alguna definición anterior de algún tipo? ¿Algún punto y coma que te falte?

Saludos

marilinspi
20-11-2013, 12:26:16
hola, no el problema lo tiene con External, porque cuando compilo el cursos se posiciona en esta palabra y me da el error que di anteriormente 'Field definition not allowed after methods or propieties' no me faltara agregar algo en USES o que haya que registrar algo... porque lo único que yo hice fue agregar esa linea a mi proyecto... Gracias

marilinspi
20-11-2013, 12:45:35
buscando... buscando... encontré el problema, pero me surgió otro

type
TForm1 = class(TForm)
function.....;
end;


es que yo la tenia declarada donde pondría una función cualquiera y no es lo correcto, debe ir afuera de la clase


type
TForm1 = class(TForm)
end;

function......;


ahora compila pero me 'error de la aplicación' La aplicación no se ha podido inicializar correctamente (0xc000007b).
si yo solamente declaro la función no me da ningún error, el problema esta cuando llamo a esa función.... alguna ayudita que me pueda dar, la DLL esta hecha en Visual Basic.

Gracias, saludos

nlsgarcia
20-11-2013, 17:26:08
marilinspi,


...el problema esta cuando llamo a esa función....la DLL esta hecha en Visual Basic...


Te comento:

1- El error se genera debido a que VB no puede crear DLLs estandar (De Forma Nativa), 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.

2- Si tienes el fuente del ActiveX DLL en VB, puedes convertirlo a un DLL estándar por medio de PowerBasic (http://www.powerbasic.com/), sin embargo esto implica cierto trabajo en la traslación.

Revisa estos links:

Registering DLL and ActiveX controls from code : http://delphi.about.com/od/windowsshellapi/l/aa040803a.htm

How To Import an ActiveX Control in Delphi : http://delphi.about.com/library/howto/htaddactivex.htm

Creating a Windows DLL with Visual Basic : http://www.windowsdevcenter.com/pub/a/windows/2005/04/26/create_dll.html
Espero sea útil :)

Nelson.