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 20-01-2020
Javierus Javierus is offline
Miembro
 
Registrado: jun 2017
Posts: 88
Poder: 7
Javierus Va por buen camino
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
Responder Con Cita
  #2  
Antiguo 20-01-2020
compuin compuin is offline
Miembro
 
Registrado: oct 2010
Posts: 210
Poder: 14
compuin Va por buen camino
Cita:
Empezado por Javierus Ver Mensaje
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
Si, esta en la misma carpeta, lo que no estoy seguro es si esta exportando

Hay alguna forma de probar eso ?
Responder Con Cita
  #3  
Antiguo 20-01-2020
Avatar de delphi.com.ar
delphi.com.ar delphi.com.ar is offline
Federico Firenze
 
Registrado: may 2003
Ubicación: Buenos Aires, Argentina *
Posts: 5.932
Poder: 27
delphi.com.ar Va por buen camino
Cita:
Empezado por compuin Ver Mensaje
...lo que no estoy seguro es si esta exportando...
Si subes la definición del header, te puedo decir si se está exportando o no.

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!
__________________
delphi.com.ar

Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla.

Última edición por delphi.com.ar fecha: 20-01-2020 a las 22:33:53.
Responder Con Cita
  #4  
Antiguo 20-01-2020
compuin compuin is offline
Miembro
 
Registrado: oct 2010
Posts: 210
Poder: 14
compuin Va por buen camino
Cita:
Empezado por delphi.com.ar Ver Mensaje
Si subes la definición del header, te puedo decir si se está exportando o no.

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!
Te refieres al header de C++ ?
Responder Con Cita
  #5  
Antiguo 20-01-2020
Avatar de delphi.com.ar
delphi.com.ar delphi.com.ar is offline
Federico Firenze
 
Registrado: may 2003
Ubicación: Buenos Aires, Argentina *
Posts: 5.932
Poder: 27
delphi.com.ar Va por buen camino
Cita:
Empezado por compuin Ver Mensaje
Te refieres al header de C++ ?
Si... si la función tiene únicamente lo que pegaste como código, sin header, ya te confirmo que no la estás exportando.
__________________
delphi.com.ar

Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla.
Responder Con Cita
  #6  
Antiguo 20-01-2020
compuin compuin is offline
Miembro
 
Registrado: oct 2010
Posts: 210
Poder: 14
compuin Va por buen camino
Cita:
Empezado por delphi.com.ar Ver Mensaje
Si... si la función tiene únicamente lo que pegaste como código, sin header, ya te confirmo que no la estás exportando.

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();
Responder Con Cita
  #7  
Antiguo 20-01-2020
Avatar de escafandra
[escafandra] escafandra is offline
Miembro Premium
 
Registrado: nov 2007
Posts: 2.197
Poder: 20
escafandra Tiene un aura espectacularescafandra Tiene un aura espectacular
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.
Responder Con Cita
  #8  
Antiguo 20-01-2020
Avatar de delphi.com.ar
delphi.com.ar delphi.com.ar is offline
Federico Firenze
 
Registrado: may 2003
Ubicación: Buenos Aires, Argentina *
Posts: 5.932
Poder: 27
delphi.com.ar Va por buen camino
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)

EXTERN_DLL_EXPORT long __stdcall 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;
}
En ese código podes observar que se exporta como una función C, con la convención stdcall.

Para compilarlo bajé el compilador gratuito Embarcadero Free C++ compiler, y lo compilé utilizando:
Código:
bcc32c funcs.cpp -tD
Y el código Delphi:
Código Delphi [-]
function MdyToJulian(mon, day, yea : integer ): Longint; stdcall; external 'funcs.dll' name 'MdyToJulian';

...

procedure TForm1.FormCreate(Sender: TObject);
begin
  Caption := FloatToStr(MdyToJulian(1, 16, 2020));
end;

Saludos!
__________________
delphi.com.ar

Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla.

Última edición por delphi.com.ar fecha: 21-01-2020 a las 16:14:15.
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

Temas Similares
Tema Autor Foro Respuestas Último mensaje
pasar for (Entry in FSMBiosTablesList) do a delphi7 fcios Varios 2 01-05-2013 18:50:19
Campo no Entry berfer Firebird e Interbase 12 22-08-2006 17:29:21
mysql no me permite agregar registros como duplicate entry.. Arturo MySQL 1 24-07-2006 19:15:39
Error (Duplicate Entry) romansiux Varios 4 31-05-2005 02:17:28
Invalid key links entry?? nefy Firebird e Interbase 8 12-05-2004 17:06:21


La franja horaria es GMT +2. Ahora son las 20:18:26.


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