|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Senior Member
Iscritto dal: Oct 2003
Messaggi: 2002
|
[C/C++] Cerco aiuto per capire la lentezza di una DLL
Salve a tutti,
sto programmando un'applicazione o meglio reingegnerizzando un software che prende in input delle immagini e fa alcuni calcoli su di esse Il software è composto da vari file oggetto che contengono funzioni ecc. ecc a cui linko poi il main per creare l'eseguibile e fino a qui tutto bene. Succesivamente ho dovuto creare una seconda versione di questo software in cui tutti i file oggetto venissero fusi in una sola dll da richiamare poi con un main apposito ed anche questo è andato bene ma nella fase dei test...... ...la versione con la dll risulta drammaticamente più lenta della prima versione nel calcolo. Circa 10 volte più lenta ![]() ![]() ![]() Allora vi chiedo? E' necessario qualche ottimizzazione, oppure non creare una sola dll ma più dll, programmare la dll in modo diverso, compilare in qualche modo specifico??? ide utilizzato: devc++ compilatore: gcc-4.2.1 grazie
__________________
Trattative sul mercatino del forum:tante e mai un problema! Controlla pure i miei vecchi post ![]() |
![]() |
![]() |
![]() |
#2 |
Senior Member
Iscritto dal: Oct 2003
Messaggi: 2002
|
ho risolto, avevo sbagliato a compilare
![]() ![]() adesso però ho un problema quando uso GetProcAddress in pratica sembra non trovare la funzione nella dll. qualche suggerimento?
__________________
Trattative sul mercatino del forum:tante e mai un problema! Controlla pure i miei vecchi post ![]() |
![]() |
![]() |
![]() |
#3 |
Senior Member
Iscritto dal: Oct 2004
Città: Valenza(AL)
Messaggi: 2453
|
ciao,
scusa potresti pastare il codice comprensivo della loadlibrary? grazie ciao
__________________
Ho concluso positivamente con tante persone! ROG Strix X570-F Gaming| 5800x | Custom loop| 4090 FE | 32GB DDR4 4400| Evga 1000W | Thermaltake grosso ![]() |
![]() |
![]() |
![]() |
#4 |
Senior Member
Iscritto dal: Oct 2003
Messaggi: 2002
|
Codice:
typedef int (*importFunction)(const char**, int, bool, bool, bool, const char*, const char*, double*, double*, int); importFunction LocateLandmarks; int result; // Load DLL file HINSTANCE hinstDLL = LoadLibrary("mystasm.dll"); if (hinstDLL == NULL) { printf("ERROR: unable to load DLL\n"); return 1; } // Get function pointer LocateLandmarks = (importFunction)GetProcAddress(hinstDLL, "LocateLandmarks"); if (LocateLandmarks == NULL) { printf("ERROR: unable to find DLL function\n"); FreeLibrary(hinstDLL); return 1; } Codice:
; dlltool -z mystasm.def --output-exp mystasm.exp mystasm.o EXPORTS ; LocateLandmarks(char const**, int, bool, bool, bool, char const*, char const*, double*, double*, int) _Z15LocateLandmarksPPKcibbbS0_S0_PdS2_i @ 1
__________________
Trattative sul mercatino del forum:tante e mai un problema! Controlla pure i miei vecchi post ![]() |
![]() |
![]() |
![]() |
#5 |
Member
Iscritto dal: Jul 2008
Messaggi: 237
|
Devi usare extern "C" nella dll per LocateLandmarks altrimenti il nome verrà decorato come da convenzione per il C++ e il risultato sarà che GetProcAddress fallirà salvo qualora tu cerchi di ottenere l'indirizzo della funzione con il nome decorato (che compare nell'ultima riga del .def, che a sua volta in realtà credo che nel tuo caso sia inutile).
|
![]() |
![]() |
![]() |
#6 | |
Senior Member
Iscritto dal: Oct 2003
Messaggi: 2002
|
Quote:
se passi da Fisciano ti meriti una birra ![]() p.s. grazie a tutti
__________________
Trattative sul mercatino del forum:tante e mai un problema! Controlla pure i miei vecchi post ![]() |
|
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 11:28.