Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
C/C++ - Utilizzare sorgente C++ in C. Come?
Forum - C/C++ - Utilizzare sorgente C++ in C. Come?

Avatar
darkingthereturn (Normal User)
Newbie


Messaggi: 6
Iscritto: 15/04/2011

Segnala al moderatore
Postato alle 14:49
Venerdì, 15/04/2011
Salve a tutti! Sono neo-programmatore (se così posso definirmi) in C.
Sto facendo un applicazione che necessita di una funzione che ho trovato nel software Audacity, in particolare l'effetto Noise Removal.

Sul sito Audacity è possibile scaricare il sorgente in C++ e, tra i vari file, ho riconosciuto subito quello che mi interessava: NoiseRemoval.cpp e NoiseRemoval.h

Dato che:
1) Conosco poco C++
2) Le funzioni definite nel file richiamano altre funzioni
3) Ho letto qui: http://www.parashift.com/c++-faq-lite/mixing-c-and-cpp.html
    senza arrivare a conclusioni.

Qualcuno può spiegarmi come potrei fare ad utilizzare tale funzione nel mio codice C? Non ho bisogno di interfacce grafiche nè nulla, tutto quello che deve fare è aprire il mio file e darlo in pasto alla funzione Noise Removal.
Vi ringrazio! :)

PM Quote
Avatar
HeDo (Founder Member)
Guru^2


Messaggi: 2765
Iscritto: 21/09/2007

Segnala al moderatore
Postato alle 15:45
Venerdì, 15/04/2011

fai prima a scriptare audiacity

PM Quote
Avatar
()
Newbie


Messaggi:
Iscritto:

Segnala al moderatore
Postato alle 16:05
Venerdì, 15/04/2011
Darking, in generale il C non supporta funzioni C++. Questo perchè il C è sottoinsieme del C++. Dunque, quanto vuoi realizzare è impossibile, gia per questo. Inoltre, tu parli di "funzioni che richiamano altre funzioni", quindi è abbastanza probabile che i due files che ti interessano contengano funzioni, quando non addirittura classi base, derivate da altri sorgenti. Visto che tu non conosci il C++, mi spiego meglio: una classe base è una struttura ("simile" alle struct che trovi anche nel C) da cui altre strutture simili possono derivare (il termine specifico è "ereditare") funzioni o dati.

PM Quote
Avatar
darkingthereturn (Normal User)
Newbie


Messaggi: 6
Iscritto: 15/04/2011

Segnala al moderatore
Postato alle 16:10
Venerdì, 15/04/2011
Testo quotato

Postato originariamente da HeDo:


fai prima a scriptare audiacity



Che io sappia, non c'è possibilità per farlo con Audacity!

edit: quello che servirebbe a me: http://wiki.audacityteam.org/index.php?title=Creating_your ...
Come implementarlo?

Testo quotato

Postato originariamente da Template:

Darking, in generale il C non supporta funzioni C++. Questo perchè il C è sottoinsieme del C++. Dunque, quanto vuoi realizzare è impossibile, gia per questo. Inoltre, tu parli di "funzioni che richiamano altre funzioni", quindi è abbastanza probabile che i due files che ti interessano contengano funzioni, quando non addirittura classi base, derivate da altri sorgenti. Visto che tu non conosci il C++, mi spiego meglio: una classe base è una struttura ("simile" alle struct che trovi anche nel C) da cui altre strutture simili possono derivare (il termine specifico è "ereditare") funzioni o dati.




Capisco... a questo punto, cosa mi consigli di fare? Ho bisogno comunque di quella funzione nel codice, non posso farne a meno! :d

Ultima modifica effettuata da darkingthereturn il 15/04/2011 alle 16:27
PM Quote
Avatar
()
Newbie


Messaggi:
Iscritto:

Segnala al moderatore
Postato alle 16:49
Venerdì, 15/04/2011
Testo quotato

Postato originariamente da darkingthereturn:
Capisco... a questo punto, cosa mi consigli di fare? Ho bisogno comunque di quella funzione nel codice, non posso farne a meno! :d



Una soluzione c'è, ma non è praticabile da tutti: riscrivere tu stesso le funzioni che ti servono. È difficile riscrivere in C delle funzioni C++, viste le differenze concettuali tra i due linguaggi. Inoltre, scrivere delle funzioni che si occupino di audio (sopattutto di modifica dell'audio) senza usare librerie gia esistenti (in C non ne esistono più da qualche anno, ormai) richiede una conoscenza ottima di analisi frequenziale, analisi di segnali periodici, trasformate di Fourier e vari altri argomenti.

PM Quote
Avatar
darkingthereturn (Normal User)
Newbie


Messaggi: 6
Iscritto: 15/04/2011

Segnala al moderatore
Postato alle 18:17
Venerdì, 15/04/2011
Testo quotato

Postato originariamente da Template:

Testo quotato

Postato originariamente da darkingthereturn:
Capisco... a questo punto, cosa mi consigli di fare? Ho bisogno comunque di quella funzione nel codice, non posso farne a meno! :d



Una soluzione c'è, ma non è praticabile da tutti: riscrivere tu stesso le funzioni che ti servono. È difficile riscrivere in C delle funzioni C++, viste le differenze concettuali tra i due linguaggi. Inoltre, scrivere delle funzioni che si occupino di audio (sopattutto di modifica dell'audio) senza usare librerie gia esistenti (in C non ne esistono più da qualche anno, ormai) richiede una conoscenza ottima di analisi frequenziale, analisi di segnali periodici, trasformate di Fourier e vari altri argomenti.



Io stesso mi sto appoggiando alla libreria libsndfile, alla quale lo stesso Audacity si appoggia e utilizza. Penso che l'unica maniera sia quella di trovare il modo di utilizzare lo stesso Audacity in batch, se possibile.

PM Quote