Ver Mensaje Individual
  #2  
Antiguo 17-11-2007
JHA JHA is offline
Registrado
 
Registrado: nov 2007
Ubicación: Montevideo, Uruguay
Posts: 3
Reputación: 0
JHA Va por buen camino
Smile stdcall o cdecl

estás seguro que el problema no está en que no especificaste stdcall o cdecl después de declarar la función. Usualmente los dll escritos en c son cdecl por defecto aunque el programador no lo haya especificado. Cuando se programa un dll en el lenguaje que sea se suele especificar stdcall. Tanto en stdcall como en cdecl el orden en que se pasan los parámetros es inverso que en Delphi. La diferencia entre sdtcall y cdecl está en que en el segundo el caller libera los recursos reservados mientras que en el segundo es la función. Lo más probable es que en un dll sean todas las funciones stdcall pero si lo hizo un programador aficionado como yo, quizá no se tomó la molestia de escribir stdcall antes de cada función. En cuanto a los miembros de las estructuras, no debería importar el nombre sino el tipo de dato. Cuando uses un miembro que es un pointer declaralo antes como PType = ^Type pero cuando sea el parámetro de una función como var VarName: Type. En cambió el nombre de las funciones sí deben coincidir con el nombre en el dll, excepto en el caso de que uses un alias pero debes especificar el nombre correcto al final.

ej: DoSomething(var b: Byte; Size: Integer); stdcall; external 'MyLib.dll';
No incluyo un ejemplo con alias porque no estoy en mi computadora sino en un cyber y no tengo la ayuda de delphi a mano, como nunca uso alias no me acuerdo si va ; antes del nombre verdadedo de la función ni me acuedo si el nombre verdadero va entre dos '.
Responder Con Cita