21/08/14 10:32
MirkoDistefano
Salve a tutti, ho da poco completato di studiare un libro sul C++.
Il libro parla di tutto il linguaggio, delle variabili, array, istruzioni di controllo, funzioni, operazioni sui bit, classi, strutture, puntatori, eccezioni, template ecc ecc...
Ma se ad esempio io vorrei fare un programma che acquisisce uno screenshot dello schermo, oppure un programma che interagisce con i processi attivi oppure anche un semplice programma che mi consente di riavviare il computer, cosa devo fare?
Dopo quasi 600 pagine ancora nessun accenno su questo?
aaa
21/08/14 12:00
TheDarkJuster
Devi appoggiarti a librerie esterne o alle syscalls del kernel.
Con g++ puoi inserire del codice assembly nei tuoi sorgenti c++... Nei sistemi unix per esempio le syscalls sono accessibili impostando sul registro eax il numero corrispondente alla syscall e poi "int 80h".
aaa
21/08/14 13:06
TheDarkJuster
Ho elencato una possibilità... l' altra è usare libc e... appunto X ma era compresa nel "Devi appoggiarti a librerie esterne" quindi mi sarei dovuto ripetere
aaa
22/08/14 10:54
MirkoDistefano
In che senso librerie esterne? E le chiamate di sistema?
Scusate l'ignoranza, ma lo chiedo perché nel libro che mi sono studiato non c'è nessun accenno su questo.
Magari conoscete qualche libro che in c++ spiega tutte le funzioni disponibili con qualche OS?
Anche avendo scaricato queste librerie, come faccio a studiarmele per poterle utilizzare?
Io uso Mac OS X e programmo con editor di testo e g++.
aaa
22/08/14 11:13
TheDarkJuster
Allora come già detto da zio le chiamate di sistema non si scrivono in assembly, ma sono i metodi come exit() printf() scanf() ecc. Questi metodi sono fisicamente nella libreria libc che gcc linka automaticamente ad ogni compilazione.
Quelle che io chiamo "librerie esterne" sono librerie che non hai scritto tu.
Un esempio pratico è sqlite. Sqlite non lo hai scritto tu, ma viene distribuito come libreria così da permettere ai tuoi programmi di utilizare sqlite.
Tieni conto che su mac esiste il cocoa framework che puoi sfruttare in objective-c quindi se vuoi hai la possibilità di usare il framework cocoa "mischiando" i due sorgenti...
La documentazione sul cocoa framework è disponibile al sito degli sviluppatori apple.
Mentre la documentazione per altre librerie viene rilasciata da chi ha scritto le librerie (infatti se vai sul sito di sqlite troverai descritte le api di sqlite)
aaa