Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Recensione Samsung Galaxy Z Fold7: un grande salto generazionale
Recensione Samsung Galaxy Z Fold7: un grande salto generazionale
Abbiamo provato per molti giorni il nuovo Z Fold7 di Samsung, un prodotto davvero interessante e costruito nei minimi dettagli. Rispetto al predecessore, cambiano parecchie cose, facendo un salto generazionale importante. Sarà lui il pieghevole di riferimento? Ecco la nostra recensione completa.
Ryzen Threadripper 9980X e 9970X alla prova: AMD Zen 5 al massimo livello
Ryzen Threadripper 9980X e 9970X alla prova: AMD Zen 5 al massimo livello
AMD ha aggiornato l'offerta di CPU HEDT con i Ryzen Threadripper 9000 basati su architettura Zen 5. In questo articolo vediamo come si comportano i modelli con 64 e 32 core 9980X e 9970X. Venduti allo stesso prezzo dei predecessori e compatibili con il medesimo socket, le nuove proposte si candidano a essere ottimi compagni per chi è in cerca di potenza dei calcolo e tante linee PCI Express per workstation grafiche e destinate all'AI.
Acer TravelMate P4 14: tanta sostanza per l'utente aziendale
Acer TravelMate P4 14: tanta sostanza per l'utente aziendale
Forte di soluzioni tecniche specifiche, il notebook Acer TravelMate P4 14 abbina dimensioni compatte e buona robustezza per rispondere alle necessità specifiche degli utenti aziendali. La piattaforma AMD Ryzen 7 Pro assicura prestazioni elevate con i tipici ambiti di produttività personale e sul lavoro, mantenendo un'elevata autonomia.
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 27-08-2005, 22:28   #1
71104
Bannato
 
L'Avatar di 71104
 
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
[C] enumerazione contenuto dir

allora, stavolta il mio problema è il seguente: sto lavorando sull'affarone delle DLL (ho fatto altri thread in passato, qualcuno quindi forse se lo ricorda) e devo semplicemente caricare nel mio processo tutte le mie DLL. tutto molto semplice, ma il problema è che il codice deve essere il più possibile portabile (tranne ovviamente il LoadLibrary), quindi devo scrivere un codice compilabile sia in VC++ sia col gcc che in un modo o nell'altro si procuri una lista delle librerie esterne da caricare e e carichi.

avevo pensato semplicemente di mettere le librerie in una dir speciale, e di far enumerare il suo contenuto dal programma, che poi fa un tentativo di caricamento per ciascun file che trova.

come si fa in C puro e portabile ad enumerare il contenuto di una cartella? altrimenti avete proposte migliori? thx
71104 è offline   Rispondi citando il messaggio o parte di esso
Old 27-08-2005, 22:54   #2
RaouL_BennetH
Senior Member
 
L'Avatar di RaouL_BennetH
 
Iscritto dal: Sep 2004
Messaggi: 3967
Al solito,ai tuoi quesiti io purtroppo non sono minimamente in grado di risponderti (e giustamente ti chiederai...perchè quindi non ti astieni dal farlo? -> la risposta è: non lo so! )...ma tu quando dici di voler compilare anche con gcc,intendi che vuoi comunque compilare sempre sotto windows?

Se la risposta è si,hai pensato di passare solo le opzioni al compilatore più che scrivere qualcosa in C puro apposta?

Codice:
Gcc Directory Options
           -Bprefix  -Idir  -iquotedir  -Ldir  -specs=file  -I-
Perdonami se ho solo scritto stupidaggini.

RaouL.
__________________
Dai wafer di silicio nasce: LoHacker... il primo biscotto Geek
RaouL_BennetH è offline   Rispondi citando il messaggio o parte di esso
Old 27-08-2005, 23:09   #3
VICIUS
Senior Member
 
L'Avatar di VICIUS
 
Iscritto dal: Oct 2001
Messaggi: 11471
man opendir
Scherzi a parte. opendir readdir e closedir sono standard posix e quindi esserci pure su windows.

ciao
VICIUS è offline   Rispondi citando il messaggio o parte di esso
Old 27-08-2005, 23:13   #4
71104
Bannato
 
L'Avatar di 71104
 
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
Quote:
Originariamente inviato da RaouL_BennetH
Al solito,ai tuoi quesiti io purtroppo non sono minimamente in grado di risponderti (e giustamente ti chiederai...perchè quindi non ti astieni dal farlo? -> la risposta è: non lo so! )...

LOL... però sei simpatico!!!

Quote:
ma tu quando dici di voler compilare anche con gcc,intendi che vuoi comunque compilare sempre sotto windows?
dovevo specificare meglio: la risposta è no, devo compilare col gcc e con qualsiasi altro compilatore C. ho scritto tutto in C standard tranne alcune parti non portabili (socket tcp/ip e poche altre cose) che Daniele si è offerto di aiutarmi a portare.

Quote:
Perdonami se ho solo scritto stupidaggini.
figurati; cioè NO!!! *non hai* scritto stupidaggini!!!!
(dai come gaf sarebbe stata stupenda... solo che visto che l'ho scritta non è una gaf... scherzi a parte, ognuno ha i suoi campi di specializzazione nei quali eccelle e poi se proprio vuoi saperlo le opzioni del gcc che hai scritto non le conosco, quindi sai almeno una cosa più di me )

ciao
71104 è offline   Rispondi citando il messaggio o parte di esso
Old 27-08-2005, 23:27   #5
71104
Bannato
 
L'Avatar di 71104
 
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
Quote:
Originariamente inviato da VICIUS
man opendir
Scherzi a parte. opendir readdir e closedir sono standard posix e quindi esserci pure su windows.
e infatti non ci sono...
cercando in MSDN ho trovato una sottosezione di "Win32 and COM programming" che spiega un certo Interix (non so cosa sia) e come migrare da UNIX a Windows... qualcuno ne sa qualcosa? potrebbe servirmi anche per l'università in effetti...
71104 è offline   Rispondi citando il messaggio o parte di esso
Old 27-08-2005, 23:39   #6
VICIUS
Senior Member
 
L'Avatar di VICIUS
 
Iscritto dal: Oct 2001
Messaggi: 11471
Ho provato a tirare fuori qualche ricordo di api e mi son ricordato qualcosa tipo FindNextFile, FindFirstFile ... forse è quello che ti serve. Ovviamente portabilità 0.

edit: google utile come al solito: http://www.microsoft.com/japan/devel...dfirstfile.htm

ciao

Ultima modifica di VICIUS : 27-08-2005 alle 23:41.
VICIUS è offline   Rispondi citando il messaggio o parte di esso
Old 27-08-2005, 23:42   #7
71104
Bannato
 
L'Avatar di 71104
 
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
Quote:
Originariamente inviato da VICIUS
Ho provato a tirare fuori qualche ricordo di api e mi son ricordato qualcosa tipo FindNextFile, FindFirstFile ... forse è quello che ti serve. Ovviamente portabilità 0.
infatti... e cmq le conoscevo già, e anche non conoscendole sarebbero bastati suppergiù 90 sec in MSDN
quello che mi serviva era qualcosa di portabile :\


edit:
Quote:
Originariamente inviato da VICIUS
edit: google utile come al solito: http://www.microsoft.com/japan/deve...ndfirstfile.htm
ma LOL
71104 è offline   Rispondi citando il messaggio o parte di esso
Old 28-08-2005, 00:11   #8
RaouL_BennetH
Senior Member
 
L'Avatar di RaouL_BennetH
 
Iscritto dal: Sep 2004
Messaggi: 3967
Ue

ma io le opendir, readdir etc...che diceva vicius le ho trovate e sono compatibili con windows:

si devono includere le glib: #include <glib.h>


"Windows Compatibility Functions -- functions to support portability to the Windows environment."

http://developer.gnome.org/doc/API/g...functions.html
__________________
Dai wafer di silicio nasce: LoHacker... il primo biscotto Geek

Ultima modifica di RaouL_BennetH : 28-08-2005 alle 00:23.
RaouL_BennetH è offline   Rispondi citando il messaggio o parte di esso
Old 28-08-2005, 00:16   #9
fantoibed
Senior Member
 
L'Avatar di fantoibed
 
Iscritto dal: May 2003
Città: Trieste, Pordenone
Messaggi: 920
Quote:
Originariamente inviato da 71104
avevo pensato semplicemente di mettere le librerie in una dir speciale, e di far enumerare il suo contenuto dal programma, che poi fa un tentativo di caricamento per ciascun file che trova.

come si fa in C puro e portabile ad enumerare il contenuto di una cartella? altrimenti avete proposte migliori? thx
Per cercare le dll usa FindFirstFileEx e FindNextFileEx:
http://msdn.microsoft.com/library/de...irstfileex.asp

Sono API del sistema operativo e quindi non dipendono dal compilatore (e nemmeno dal linguaggio).

Per caricare le librerie LoadLibrary o GetModuleHandle e per determinare l'entry point della funzione che ti interessa importare usa GetProcAddress che restituisce un long che è l'indirizzo di memoria della funzione che intendi chiamare. Per usare tale funzione, però, devi castarla (nel senso di type casting) al giusto prototipo.

Esempio:
Codice:
        user32=GetModuleHandle("USER32.DLL");
        SLWA=(BOOL ( __stdcall *) (HWND, COLORREF, BYTE, DWORD)) GetProcAddress(user32, TEXT("SetLayeredWindowAttributes"));
...dove user32 e SLWA sono dichiarate così:
Codice:
HMODULE user32;
BOOL (__stdcall *SLWA)(HWND, COLORREF, BYTE, DWORD);
__________________
buy here

Ultima modifica di fantoibed : 28-08-2005 alle 12:29.
fantoibed è offline   Rispondi citando il messaggio o parte di esso
Old 28-08-2005, 00:39   #10
71104
Bannato
 
L'Avatar di 71104
 
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
Quote:
Originariamente inviato da RaouL_BennetH
Ue
LOL

Quote:
ma io le opendir, readdir etc...che diceva vicius le ho trovate e sono compatibili con windows:

si devono includere le glib: #include <glib.h>
si, ma non stanno nel Visual C++
mi sa che per usare quell'header dovrei installare mingw...
71104 è offline   Rispondi citando il messaggio o parte di esso
Old 28-08-2005, 00:40   #11
71104
Bannato
 
L'Avatar di 71104
 
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
Quote:
Originariamente inviato da fantoibed
Sono API del sistema operativo e quindi non dipendono dal compilatore (e nemmeno dal linguaggio).
ehm, però come dire... dipendono dal sistema operativo... (per l'appunto...)

io cercavo un modo portabile per enumerare il contenuto di una cartella.
71104 è offline   Rispondi citando il messaggio o parte di esso
Old 28-08-2005, 00:44   #12
fantoibed
Senior Member
 
L'Avatar di fantoibed
 
Iscritto dal: May 2003
Città: Trieste, Pordenone
Messaggi: 920
Quote:
Originariamente inviato da 71104
ehm, però come dire... dipendono dal sistema operativo... (per l'appunto...)

io cercavo un modo portabile per enumerare il contenuto di una cartella.
Hai parlato di DLL però, quindi si presume che l'OS sia Windows... O no?
__________________
buy here
fantoibed è offline   Rispondi citando il messaggio o parte di esso
Old 28-08-2005, 02:10   #13
AnonimoVeneziano
Senior Member
 
L'Avatar di AnonimoVeneziano
 
Iscritto dal: Aug 2001
Città: San Francisco, CA, USA
Messaggi: 13827
Quote:
Originariamente inviato da 71104
LOL

si, ma non stanno nel Visual C++
mi sa che per usare quell'header dovrei installare mingw...

Se vuoi per forza compilare con Visual C++ difficilmente riuscirai a tirare fuori qualcosa di portabile

Devi usare un compilatore multipiattaforma , come GCC aka minigw/Dev C++

Forse è possibile anche con Visual C++ ma è sicuramente + semplice con GCC

Ciao
__________________
GPU Compiler Engineer
AnonimoVeneziano è offline   Rispondi citando il messaggio o parte di esso
Old 28-08-2005, 06:15   #14
cdimauro
Senior Member
 
L'Avatar di cdimauro
 
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
Quote:
Originariamente inviato da VICIUS
man opendir
Scherzi a parte. opendir readdir e closedir sono standard posix e quindi esserci pure su windows.

ciao
Il sottosistema POSIX di Windows non c'è più a partire da XP, se non ricordo male (e comunque era molto vecchio e non aggiornato).

Forse la soluzione sarebbe quella di usare il classico #ifdef a seconda che si lavori con VisualStudio o MingW/Cygwin, creando delle apposite funzioni o macro.
Una palla, insomma...
__________________
Per iniziare a programmare c'è solo Python con questo o quest'altro (più avanzato) libro
@LinkedIn Non parlo in alcun modo a nome dell'azienda per la quale lavoro
Ho poco tempo per frequentare il forum; eventualmente, contattatemi in PVT o nel mio sito. Fanboys
cdimauro è offline   Rispondi citando il messaggio o parte di esso
Old 28-08-2005, 12:25   #15
VICIUS
Senior Member
 
L'Avatar di VICIUS
 
Iscritto dal: Oct 2001
Messaggi: 11471
Quote:
Originariamente inviato da cdimauro
Il sottosistema POSIX di Windows non c'è più a partire da XP, se non ricordo male (e comunque era molto vecchio e non aggiornato).

Forse la soluzione sarebbe quella di usare il classico #ifdef a seconda che si lavori con VisualStudio o MingW/Cygwin, creando delle apposite funzioni o macro.
Una palla, insomma...
È un peccato perché in fondo sono molto più facili e intuitive da usare per u programmatore C che ha usato per anni funzioni come fopen e fclose.

ciao
VICIUS è offline   Rispondi citando il messaggio o parte di esso
Old 28-08-2005, 15:43   #16
71104
Bannato
 
L'Avatar di 71104
 
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
be', riassumendo mi pare di capire che non c'è modo, quindi credo che adotterò quest'altra soluzione: scriverò in un file "index.dat" l'elenco delle librerie che il programma deve cercare nella directory e tentare di caricare: i files li posso leggere tranquillamente in maniera portabile. l'unica cosa che rimane non portabile è la LoadLibrary con relativa GetProcAddress.
71104 è offline   Rispondi citando il messaggio o parte di esso
Old 28-08-2005, 16:42   #17
fantoibed
Senior Member
 
L'Avatar di fantoibed
 
Iscritto dal: May 2003
Città: Trieste, Pordenone
Messaggi: 920
Quote:
Originariamente inviato da 71104
be', riassumendo mi pare di capire che non c'è modo, quindi credo che adotterò quest'altra soluzione: scriverò in un file "index.dat" l'elenco delle librerie che il programma deve cercare nella directory e tentare di caricare: i files li posso leggere tranquillamente in maniera portabile. l'unica cosa che rimane non portabile è la LoadLibrary con relativa GetProcAddress.
Io non capisco ancora il tuo problema di portabilità. Hai parlato di VC, mingw e Dev C++ che sono tutti compilatori per Windows. Se usi FindFirstFileEx e FindNextFileEx il tuo codice girerà sarà protabile a tutti e 3 questi compilatori...
__________________
buy here
fantoibed è offline   Rispondi citando il messaggio o parte di esso
Old 28-08-2005, 17:18   #18
VICIUS
Senior Member
 
L'Avatar di VICIUS
 
Iscritto dal: Oct 2001
Messaggi: 11471
Quote:
Originariamente inviato da 71104
be', riassumendo mi pare di capire che non c'è modo, quindi credo che adotterò quest'altra soluzione: scriverò in un file "index.dat" l'elenco delle librerie che il programma deve cercare nella directory e tentare di caricare: i files li posso leggere tranquillamente in maniera portabile. l'unica cosa che rimane non portabile è la LoadLibrary con relativa GetProcAddress.
Scusa ma perché non ti crei la tua funzione piglia_lista_files(). la metti in un file separato e poi la implementi in modo diverso a seconda del sistema operativo su cui ti trovi, questione di un #ifdef.

ciao
VICIUS è offline   Rispondi citando il messaggio o parte di esso
Old 28-08-2005, 20:39   #19
71104
Bannato
 
L'Avatar di 71104
 
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
Quote:
Originariamente inviato da fantoibed
Io non capisco ancora il tuo problema di portabilità. Hai parlato di VC, mingw e Dev C++ che sono tutti compilatori per Windows. Se usi FindFirstFileEx e FindNextFileEx il tuo codice girerà sarà protabile a tutti e 3 questi compilatori...
veramente non ho parlato ne' di mingw ne' tantomeno di Dev-C++
il programma che sto facendo è C++ puro con pochissime parti Win32 (socket e qualcos'altro) che Daniele mi aiuterà a portare (per fortuna i socket sono quasi identici a quelli di Linux). il sorgente deve essere portabile.
71104 è offline   Rispondi citando il messaggio o parte di esso
Old 28-08-2005, 20:39   #20
71104
Bannato
 
L'Avatar di 71104
 
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
Quote:
Originariamente inviato da VICIUS
Scusa ma perché non ti crei la tua funzione piglia_lista_files(). la metti in un file separato e poi la implementi in modo diverso a seconda del sistema operativo su cui ti trovi, questione di un #ifdef.
si, ma si fa prima leggendo dal file index
scrivo una volta sola e vale sia per Windows che per Linux
71104 è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Recensione Samsung Galaxy Z Fold7: un grande salto generazionale Recensione Samsung Galaxy Z Fold7: un grande sal...
Ryzen Threadripper 9980X e 9970X alla prova: AMD Zen 5 al massimo livello Ryzen Threadripper 9980X e 9970X alla prova: AMD...
Acer TravelMate P4 14: tanta sostanza per l'utente aziendale Acer TravelMate P4 14: tanta sostanza per l'uten...
Hisense M2 Pro: dove lo metti, sta. Mini proiettore laser 4K per il cinema ovunque Hisense M2 Pro: dove lo metti, sta. Mini proiett...
Lenovo ThinkPad X1 2-in-1 G10 Aura Edition: il convertibile di classe Lenovo ThinkPad X1 2-in-1 G10 Aura Edition: il c...
Gli iPhone in offerta oggi? C'è i...
L'evoluzione di Revolut: arrivano anche ...
Microsoft entra nel club dei 4.000 milia...
Ufficiale, Google firmerà il Codi...
Mettereste una NPU dedicata all'intellig...
I nuovi iPhone 17 costeranno di pi&ugrav...
Zuckerberg: 'Chi non indosserà sm...
La scopa elettrica bestseller super acce...
Amazon, svendite pesanti di 11 TV OLED: ...
Xbox: dal prossimo mese verifica dell'id...
Corsair AI Workstation 300: poco pi&ugra...
Addio a Elio Marioli, un pioniere della ...
L'IA sta già diminuendo il potere...
Guida autonoma? Gli ADAS falliscono e in...
Skechers lancia le scarpe per bambini co...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 08:33.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Served by www3v