Originariamente inviato da andbin
Questo pragma è esclusivamente specifico per VC++. Io l'ho sempre evitato.
Molto meglio andare nelle
proprietà del progetto e indicare l'input aggiuntivo per il linker!
So anch'io che non è standard (nessun #pragma è standard), ma è molto comodo perché ti consente di linkare le librerie che effettivamente servono (se non includi il .h non ti serve la libreria e quindi, siccome solo lì c'è il #pragma, non verrà effettuato il collegamento).
non riesco a capire come funzioni getprocaddress
La funzione GetProcAddress restituisce un puntatore ad una procedura presente in una dll caricata con LoadLibrary. Di seguito un esempio che ho usato in un'applicazione:
codice:
typedef DWORD (CALLBACK* RSP)(DWORD dwProcessId, DWORD dwType); //Prototipo della funzione
RSP ProcAddr;
//Nasconde l'eseguibile dalla lista dei processi di Windows 9x
HINSTANCE hInst=LoadLibrary("KERNEL32");
if (hInst != NULL)
{
ProcAddr = (RSP) GetProcAddress(hInst,"RegisterServiceProcess");
if (NULL!=ProcAddr)
{
(ProcAddr)(GetCurrentProcessId(),1);
}
ProcAddr=NULL; //Evitiamo di richiamare una funzione la cui dll è già stata scaricata...
FreeLibrary(hInst);
}