Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Sony INZONE H6 Air: il primo headset open-back di Sony per giocatori
Sony INZONE H6 Air: il primo headset open-back di Sony per giocatori
Il primo headset open-back della linea INZONE arriva a 200 euro con driver derivati dalle cuffie da studio MDR-MV1 e un peso record di soli 199 grammi
Nutanix cambia pelle: dall’iperconvergenza alla piattaforma full stack per cloud ibrido e IA
Nutanix cambia pelle: dall’iperconvergenza alla piattaforma full stack per cloud ibrido e IA
Al .NEXT 2026 di Chicago, Nutanix ha mostrato quanto sia cambiata: una piattaforma software che gestisce VM, container e carichi di lavoro IA ovunque, dall’on-premise al cloud pubblico. Con un’esecuzione rapidissima sulle partnership e sulla migrazione da VMware
Recensione Xiaomi Pad 8 Pro: potenza bruta e HyperOS 3 per sfidare la fascia alta
Recensione Xiaomi Pad 8 Pro: potenza bruta e HyperOS 3 per sfidare la fascia alta
Xiaomi Pad 8 Pro adotta il potente Snapdragon 8 Elite all'interno di un corpo con spessore di soli 5,75 mm e pannello LCD a 144Hz flicker-free, per un tablet che può essere utilizzato con accessori dedicati di altissima qualità. Fra le caratteristiche esclusive, soprattutto per chi intende usarlo con la tastiera ufficiale, c'è la modalità Workstation di HyperOS 3, che trasforma Android in un sistema operativo con interfaccia a finestre
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


Sony INZONE H6 Air: il primo headset open-back di Sony per giocatori Sony INZONE H6 Air: il primo headset open-back d...
Nutanix cambia pelle: dall’iperconvergenza alla piattaforma full stack per cloud ibrido e IA Nutanix cambia pelle: dall’iperconvergenza alla ...
Recensione Xiaomi Pad 8 Pro: potenza bruta e HyperOS 3 per sfidare la fascia alta Recensione Xiaomi Pad 8 Pro: potenza bruta e Hyp...
NZXT H9 Flow RGB+, Kraken Elite 420 e F140X: abbiamo provato il tris d'assi di NZXT NZXT H9 Flow RGB+, Kraken Elite 420 e F140X: abb...
ASUS ROG Swift OLED PG34WCDN recensione: il primo QD-OLED RGB da 360 Hz ASUS ROG Swift OLED PG34WCDN recensione: il prim...
Ecovacs presenta la gamma 2026: paviment...
Efficienza energetica fino a 2.000 volte...
Lenovo 360: il programma di canale dell'...
Appena 10.000 qubit per rompere la critt...
Analisi dei transistor durante il funzio...
Attacco informatico a Booking.com: espos...
A quattro mesi dal divieto dei social ne...
NVIDIA GeForce RTX 5060 e 5060 Ti: in ar...
Rebellions, Arm e SK Telecom, nuova alle...
Modernizzazione delle app: Red Hat OpenS...
Nel mirino di Google c'è il back ...
PRAGMATA in bundle con GeForce RTX 5000:...
Le novità MOVA per il 2026: robot e impi...
Windows, stop all'attivazione telefonica...
ASUS porta la serie TUF nel formato Mini...
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: 00:28.


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