Entry Point Not Found
Hola amigos,
Me encuentro creando una .DLL que compile en Borland C++ 7.4 y cuando trato de llamar la funcion que esta DLL tiene desde Delphi, en la compilacion me arroja el siguiente mensaje Este es el codigo que estoy usando desde Delphi
Y aca la funcion en la DLL long MdyToJulian(int mon, int day, int yea) { long im, j; im = 12*((long)yea+4800)+(long)mon-3; j = (2*(im%12) + 7 + 365*im)/12; j += (long)day + im/48 - 32083; if (j > 2299171) /* Take care of dates in */ j += im/4800 - im/1200 + 38; /* Gregorian calendar. */ return j; } GRacias de antemano |
Hace milenios que no uso C/C++, pero ¿Estás seguro de que la DLL está exportando esa función?
Y lo evidente: La DLL está en la misma carpeta que el exe |
Cita:
Hay alguna forma de probar eso ? |
¿El error es en tiempo de compilación o de ejecución?
Aparentemente tu DLL no estaría exportando por nombre la función "MdyToJulian". Igualmente si es solo ese fragmento de código el que tienes que utilizar, y suponiendo por el nombre que se trata de obtener la fecha en Juliano, te recomiendo usar la función DateTimeToJulianDate de la unit DateUtils, en conjunto con EncodeDateTime.
Saludos! |
Por aquí explican que en C++ a veces los nombres exportados no son los que se espera:
https://stackoverflow.com/questions/...t-could-not-be |
Cita:
Otra forma, "navegar" la librería, dado que si exporta la función por nombre, puedes verla con alguna herramienta tipo: ExportViewer ó Dependency Walker. Saludos! |
Cita:
|
Cita:
|
Cita:
Aca parte del header /* From formulas.c */ #define EclToEqu(Z, L) CoorXform(Z, L, DTOR(TROPIC)) #define EquToEcl(Z, L) CoorXform(Z, L, DTOR(-TROPIC)) #define EquToLocal(Z, L, T) CoorXform(Z, L, T) #define ReadPlanetData() (*datapointer++) #define Biorhythm(D, R) (sin(((D)/(R))*PI*2.0)*100.0) #define JulianDayFromTime(T) ((T)*36525.0+2415020.0) extern long MdyToJulian(); extern void JulianToMdy(); extern real ProcessInput(); extern void CoorXform(); extern int HousePlaceIn(); extern void HousePlace(); extern void ComputeStars(); extern real CastChart(); |
En C/C++ extern no exporta, simplemente le dice al compilador que esa función está implementada en otro sitio.
Para exportar funciones en una dll se usa __declspec(dllexport) Mira el ejemplo que dejé aquí. Saludos. |
Cita:
Esto deberia ir donde ? En el archivo de cabecera o en el .cpp con la funcion ? |
Cita:
La etiqueta del código pone PHP pero el código es C. Simplemente uso esa etiqueta porque CD no tiene etiquetas para C/C++ y la de PHP es la que deja el formato de código más parecido a C/C++ al publicar. Saludos. |
Acá te dejo un ejemplo hecho a medida:
Archivo funcs.cpp (todo junto, deberías pasar la definición al header) Código:
#define EXTERN_DLL_EXPORT extern "C" __declspec(dllexport) Para compilarlo bajé el compilador gratuito Embarcadero Free C++ compiler, y lo compilé utilizando: Código:
bcc32c funcs.cpp -tD
Saludos! |
Cita:
Federico: ¡Tú también has regresado! :) Javier. Hay algo pendiente en tu WhatsApp. :-) |
La franja horaria es GMT +2. Ahora son las 08:07:30. |
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