Este hilo es muy largo y quizá me he saltado algo pero creo que hasta ahora no has mencionado cuál es el error que te dá excepto la mención original de "no me carga bien las funciones que exporta la DLL" pero supongo que sí las carga ya que verificas el resultado de GetProcAddress.
Además del convenio de llamada, ¿has revisado la forma en que declaras el encabezado?
Es decir, en
Código Delphi
[-]
AbrirTablaFinales: function(bitmap_type: EGDB_BITMAP_TYPE;
pieces,cache_mb: Integer;
directory: pAnsiChar;
FMensajes: TFMensajes)
:PEGDB_DRIVER; cdecl;
¿estás seguro que el último parámetro debe ser así? Según la declaración de TFMensajes:
Código Delphi
[-]
type
TFMensajes = procedure(texto: pAnsiChar); cdecl;
infiero que el último parámetro es una función pero a juzgar por otras declaraciones en Delphi de la API de Windows, cuando un parámetro es una función, lo declaran como LongInt y luego hacen un moldeo para acceder a la función, es decir, que en ese tipo de parámetros reciben la dirección (LongInt) de la función.
Bueno, a lo mejor no tiene nada que ver pero igual te da una idea.
// Saludos