|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Member
Iscritto dal: Apr 2007
Messaggi: 263
|
[C++] Threading e dll, non ci capisco niente
Salve a tutti, ho un paio di domande da farvi:
1) Come si crea un thread, e si devono usano le api di windows? 2) Come si crea una dll (con VC++ 2005 o dev-c++) 3) Come si crea un programma estendibile mediante plugin? |
|
|
|
|
|
#2 | |||
|
Bannato
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
|
Quote:
Quote:
1) l'entry point non è obbligatorio ma è opzionale, e non si chiama più main o WinMain ma DllMain: http://msdn2.microsoft.com/en-us/library/ms682583.aspx 2) tramite un'apposita opzione devi dire al linker che il file di output deve essere una DLL e non un eseguibile stand-alone. in realtà non devi specificare esplicitamente quest'opzione (sempre che usi un IDE decente, come il primo dei due che hai nominato) ma tipicamente ti basta creare un progetto con un'apposito template. Quote:
![]() comunque è una domanda che non ha molto senso: i programmi estendibili tramite plugins li crei come ti pare, sei tu che definisci l'architettura e le interfacce del programma e dei plugins. organizzare i plugins in forma di DLL non è una cattiva idea ad esempio, visto che sfrutti la modularità nativa del sistema operativo. Ultima modifica di 71104 : 12-08-2007 alle 13:09. |
|||
|
|
|
|
|
#3 |
|
Member
Iscritto dal: Apr 2007
Messaggi: 263
|
Inoltre volevo chiedere se era possibile creare una dll anche nella versione express( + platform SDK)
|
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
|
Sì, certo.
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%) |
|
|
|
|
|
#5 |
|
Senior Member
Iscritto dal: Sep 2004
Città: Interamnia Urbs
Messaggi: 2126
|
prendi il sorgente di miranda-im, organizza i plugin sottoforma di dll, così vedi come funziona.
__________________
Un wormhole (buco di tarlo, in italiano), detto anche Ponte di Einstein-Rosen, è una ipotetica caratteristica topologica dello spaziotempo che è essenzialmente una "scorciatoia" da un punto dell'universo a un altro, che permetterebbe di viaggiare tra di essi più velocemente di quanto impiegherebbe la luce a percorrere la distanza attraverso lo spazio normale. Go to a Wormhole |
|
|
|
|
|
#6 |
|
Member
Iscritto dal: Apr 2007
Messaggi: 263
|
Grazie dei vostri consigli
Ho provato a fare un po'di test: Codice:
int main(void)
{
HINSTANCE Handle = LoadLibrary(L"plugin.dll");
if(!Handle)
{
std::cout << "Dll not found\n";
system("pause");
return 1;
}
typedef int (__stdcall *CreateFn)();
CreateFn funct;
// funct = (CreateFn) GetProcAddress(Handle,"GetValue"); <<<<<<<<<<<<< Errore
funct = (CreateFn) GetProcAddress(Handle,"?GetValue@@YAHXZ");
if(!funct)
{
std::cout << "Function not found\n";
system("pause");
return 1;
}
std::cout << funct();
system("pause");
return 0;
}
|
|
|
|
|
|
#7 | |
|
Senior Member
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
|
Quote:
Basta che la funzione la dichiari extern "C"
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%) |
|
|
|
|
|
|
#8 |
|
Member
Iscritto dal: Apr 2007
Messaggi: 263
|
Grazie mille !!!
Ora funziona |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 13:57.





















