FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour preguntita enlazado de funciones en C
Posts: 518
Joined: Fri Jun 29, 2012 12:49 PM
preguntita enlazado de funciones en C
Posted: Tue May 05, 2015 11:35 AM
Amigos,

Tengo unas funciones en C, definidas con #pragma BEGINDUMP, por ejemplo:

Code (fw): Select all Collapse
/------------------------------------------------//
#pragma BEGINDUMP

#include "windows.h"
#include "hbapi.h"
#include "hbapiitm.h"
#include "SecureEngineSDK.h"
#include "WinLicenseSDK.h"





HB_FUNC( ISVIRTUALPC )
{
  hb_retl( WLCheckVirtualPC() );
}

#pragma ENDDUMP
//------------------------------------------------//




驴C贸mo hago para que estas funciones en C s贸lo se compilen si llamo a ISVIRTUALPC() desde Harbour?.

Desde ya, muy agradecida :-).
Posts: 989
Joined: Thu Nov 24, 2005 03:01 PM
Re: preguntita enlazado de funciones en C
Posted: Tue May 05, 2015 01:13 PM

Elvira,

el enlazado opcional se hace si pones las funciones en una librer铆a. Todo lo que est谩 dentro de un mismo PRG, y por lo tanto en un OBJ, se llama m贸dulo. El enlazador busca las funciones primero en los objs, y si no las encuentra las busca en las LIBs, y cuando la encuentra incluye todo el modulo donde encontro la funci贸n, por lo que te sugiero que pongas en cada prg o C solo las funciones relacionadas, no hagas grandes prgs que contienen muchas funciones, porque si usas una sola de ellas todo el modulo, es decir todas las funciones, se incluir谩n en el exe.

Saludos
Carlos Mora
http://harbouradvisor.blogspot.com/
StackOverflow http://stackoverflow.com/users/549761/carlos-mora
鈥淚f you think education is expensive, try ignorance"
Posts: 44158
Joined: Thu Oct 06, 2005 05:47 PM
Re: preguntita enlazado de funciones en C
Posted: Tue May 05, 2015 04:31 PM

Elvira,

En mi opini贸n no se puede. La funcion IsVirtualPC() se ejecutar谩 en tiempo de ejecuci贸n de la aplicaci贸n.

Y el proceso de compilado de tu EXE es algo que ocurri贸 antes de ese momento.

Salvo que te refieras a otra cosa.

regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 6755
Joined: Wed Feb 15, 2012 08:25 PM
Re: preguntita enlazado de funciones en C
Posted: Tue May 05, 2015 05:10 PM

Y con algun #define / #ifdef ?

Cristobal Navarro

Hay dos tipos de personas: las que te hacen perder el tiempo y las que te hacen perder la noci贸n del tiempo

El secreto de la felicidad no est谩 en hacer lo que te gusta, sino en que te guste lo que haces
Posts: 989
Joined: Thu Nov 24, 2005 03:01 PM
Re: preguntita enlazado de funciones en C
Posted: Wed May 06, 2015 03:41 PM

驴Por que no os parece bien lo de la lib?

Recordar que si una funcion de una lib no se referencia, no se enlaza. Para forzarlo se invent贸 el REQUEST. Recordad que XBrowse con ADS fallaba si no haciamos el REQUEST de ADSGetRelKeyPos() y ADSKeyCount(), el caso de Elvira ser铆a justo lo contrario, no?

Saludos
Carlos Mora
http://harbouradvisor.blogspot.com/
StackOverflow http://stackoverflow.com/users/549761/carlos-mora
鈥淚f you think education is expensive, try ignorance"
Posts: 1515
Joined: Thu Oct 30, 2008 02:37 PM
Re: preguntita enlazado de funciones en C
Posted: Wed May 06, 2015 03:52 PM

Carlos,

Yo creo que hay confusion en el hilo.

Elvira habla de "compilen"... es decir, compilar dependiendo del valor devuelto por una funcion, en este caso IsVirtualPC(). Esto, todos sabemos que no es posible.
Antonio Linares responde pensando que habla de linkar en funcion de una funcion y responde naturalmente que no se puede.
Cristobal cree que es imposible y quiere que se sustituya el IsVirtualPC() por algo asi como un (es mio) IS_VIRTUALPC
Tu viendo, todo esto has interpretado "linkar".

驴 Alguien da m谩s ?

Creo que la pregunta es dif铆cil de responder si Elvira no hace saber exactamente lo que quiere.

Saludos.

Posts: 6755
Joined: Wed Feb 15, 2012 08:25 PM
Re: preguntita enlazado de funciones en C
Posted: Wed May 06, 2015 06:03 PM
hmpaquito wrote:Carlos,

Yo creo que hay confusion en el hilo.

Elvira habla de "compilen"... es decir, compilar dependiendo del valor devuelto por una funcion, en este caso IsVirtualPC(). Esto, todos sabemos que no es posible.
Antonio Linares responde pensando que habla de linkar en funcion de una funcion y responde naturalmente que no se puede.
Cristobal cree que es imposible y quiere que se sustituya el IsVirtualPC() por algo asi como un (es mio) __IS_VIRTUALPC__
Tu viendo, todo esto has interpretado "linkar".

驴 Alguien da m谩s ?

Creo que la pregunta es dif铆cil de responder si Elvira no hace saber exactamente lo que quiere.

Saludos.


Yo me referia a incluir en el codigo algo asi

Code (fw): Select all Collapse
#ifdef ....
 Function ...

 Return ...

Al igual que en las llamadas a la function, no lo he probado
Cristobal Navarro

Hay dos tipos de personas: las que te hacen perder el tiempo y las que te hacen perder la noci贸n del tiempo

El secreto de la felicidad no est谩 en hacer lo que te gusta, sino en que te guste lo que haces

Continue the discussion