View Full Version : [C++] 2 domande
Avrei due domande sul C++:
[list=1]
Come si carika na DLL esterna(con codice)????
Come si fa per sapere se un numero è pari o dispari(sempre con codice)????
[/list=1]
Grazie per ecentuali risposte
Ciauz:cool:
Originariamente inviato da Luc@s
[B]Avrei due domande sul C++:
[list=1]
Come si carika na DLL esterna(con codice)????
Come si fa per sapere se un numero è pari o dispari(sempre con codice)????
[/list=1]
Grazie per ecentuali risposte
Ciauz:cool:
2)
if(x%2 == 0)
//e' pari
else
//no
Preso da MSDN:
The following example illustrates an important difference between run-time and load-time dynamic linking. If the MYPUTS.DLL file is not available, the application using load-time dynamic linking simply terminates. The run-time dynamic linking example, however, can respond to the error.
// File: RUNTIME.C
// A simple program that uses LoadLibrary and
// GetProcAddress to access myPuts from MYPUTS.DLL.
#include <stdio.h>
#include <windows.h>
typedef VOID (*MYPROC)(LPTSTR);
VOID main(VOID)
{
HINSTANCE hinstLib;
MYPROC ProcAdd;
BOOL fFreeResult, fRunTimeLinkSuccess = FALSE;
// Get a handle to the DLL module.
hinstLib = LoadLibrary("myputs");
// If the handle is valid, try to get the function address.
if (hinstLib != NULL)
{
ProcAdd = (MYPROC) GetProcAddress(hinstLib, "myPuts");
// If the function address is valid, call the function.
if (fRunTimeLinkSuccess = (ProcAdd != NULL))
(ProcAdd) ("message via DLL function\n");
// Free the DLL module.
fFreeResult = FreeLibrary(hinstLib);
}
// If unable to call the DLL function, use an alternative.
if (! fRunTimeLinkSuccess)
printf("message via alternative method\n");
}
Because the program uses run-time dynamic linking, you should not link with the import library when creating the program module.
sono niubbo, potresti spiegarmi meglio come funzia(nn essere troppo tecnico pero:rolleyes: )????????
Ciauz:cool:
Originariamente inviato da kingv
[B]
2)
if(x%2 == 0)
//e' pari
else
//no
Grazie per aver risposto all secondo quesito, ma riguardo al primo:(??????
Ciauz:cool: :
In sostanza la procedura riportata funziona così: con
hinstLib = LoadLibrary("nomedll.dll");
crei una instanza in memoria della DLL (nell'esempio "MYPUTS.DLL")
Se l'handle ricevuto è valido (!=NULL) allora puoi determinare l'indirizzo della funzione che hai esportato nella DLL, usando la funzione GetProcAddress (nell'esempio si determina l'indirizzo di myPuts).
Se è tutto ok, puoi chiamare la funzione, in questo modo:
(ProcAdd) (parametri);
Bisogna ricordarsi, finito di usare la DLL, di eliminare il riferimento ad essa e liberare la memoria, così:
fFreeResult = FreeLibrary(hinstLib);
tnk.
E un .lib cosa è, come lo si richiama e cosa deve contenere??????
Ciauz:cool:
Originariamente inviato da Luc@s
[B]
Grazie per aver risposto all secondo quesito, ma riguardo al primo:(??????
Ciauz:cool: :
non ho mai scritto una riga di C++ sotto win.
su solaris c'e' un meccanismo per caricare librerie C a runtime:
le funzioni dlopen, dlsym, dlerror e dlclose forniscono accesso al linker ld, ma non le ho mai utilizzate. Se sei interessato manda un pvt a ilsensine, lui dovrebbe conoscerle bene.
allora tu usi i .h ?????
P.S: E un .lib cosa è, come lo si richiama e cosa deve contenere??????
Ciauz:cool:
MickMacello
07-05-2002, 19:12
Originariamente inviato da Luc@s
[B]Avrei due domande sul C++:
[list=1]
Come si fa per sapere se un numero è pari o dispari(sempre con codice)????
[/list=1]
if (x&1)
//dispari
else
//pari
I file .LIB sono librerie, che vengono indicate preventivamente al compilatore e vengono incluse nel tuo progetto. Sono accoppiati ad un file header (.H) che ne definisce i prototipi delle funzioni esposte.
Dirti di più è difficile, dipende dal tuo ambiente di sviluppo!
allora uso Dev C++ 4 su Windows ME
Ciauz:cool:
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.