Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > OOP
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 17-11-2007
JHA JHA is offline
Registrado
 
Registrado: nov 2007
Ubicación: Montevideo, Uruguay
Posts: 3
Poder: 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
  #2  
Antiguo 17-11-2007
JHA JHA is offline
Registrado
 
Registrado: nov 2007
Ubicación: Montevideo, Uruguay
Posts: 3
Poder: 0
JHA Va por buen camino
Ogg Vorbis y delphi

Usualmente hago dll con Dev-cpp y los uso en Delphi y viceversa. Pero cuando compilé Libogg con Dev-cpp importando un projecto de MS Visual C++ que viene en la carpeta win32 del paquete de distribución de libogg y vorbis no conseguí más que violaciones de acceso con Delphi. Lo posteo aquí porque creo que esto está relacionado con el problema del compañero, ¿alguien que pueda constestar ambas preguntas con una misma respuesta? Apropósito, compañero, ¿trataste de usar GetProcAddress del SDK de Windows en lugar de declarar las funciones con external? A mi me funciona pero no con libogg. Post Data: $L no funciona si la librería es '.a' y no ganas nada con cambiarle la extensión a '.obj' porque el linker te sale con que el formato es incorrecto. Creo que esto último sí amerita una nueva discusión.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 08:41:27.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi