Sono un programmatore molto inesperto, quindi scusami se questa è una domanda stupida da porre. E allo stesso modo, se qualcuno che rispondesse potesse presumere che io non conosca praticamente nulla e mi tratti come un idiota, sarebbe fantastico ...
Ho del codice in C ++ che è un'interfaccia di un dispositivo fisico. È importante sottolineare che parte di questo è la scrittura di immagini sul dispositivo assegnando valori di pixel per una matrice di pixel 512x512, con questi valori memorizzati utilizzando la classe vettoriale C ++. I valori sono scritti in questo usando un puntatore che viene incrementato e dereferenziare il puntatore per assegnare il valore.
Ho anche un codice che ho scritto in C, che calcola quale immagine effettivamente scrivere. (Il codice usa le trasformate di Fourier, per le quali ho usato la libreria FFTW). Quello che voglio fare è questo: ogni volta che nel codice C ++ voglio scrivere un'immagine al dispositivo, voglio chiamare questo codice C per calcolare quale immagine scrivere, e ottenere l'output di il codice C nel codice C ++.
I miei dati C hanno il seguente modulo (se ho capito bene): Ho un puntatore di tipo fftw_complex e quello che presumo sia un array 1D di dimensione 512x512x2 (come s = 512, e fftw_complex deve avere dimensione 2 come è per la memorizzazione di un numero complesso). Nel caso in cui ho sbagliato, ecco la dichiarazione / allocazione di memoria:
fftw_complex *slmPlane
slmPlane = (fftw_complex*) fftw_malloc(s*s * sizeof(fftw_complex));
Il mio codice C non è compatibile con C ++. Ho array definiti con dimensioni date da variabili e ci sono molti problemi. Non ho l'esperienza, o davvero il tempo, per rendere questo codice compilato ed eseguito con C ++. Ho visto molti articoli sulla chiamata di singole funzioni C da C ++ ... ma quello che voglio fare è chiamare un intero bit di codice separato, che è una funzione principale oltre a circa 50 altre. E non voglio preoccuparmi di rendere compatibile il codice C C ++.
In definitiva, quindi, quello che devo sapere è:
-
C'è un modo semplice per chiamare un pezzo di codice separato con l'estensione .c, che non è compatibile con C ++, con lo script C ++ (.cpp)?
-
Come posso ottenere l'output del codice C (una matrice 1D di lunghezza 512x512x2) nel codice C ++ (dove verrà assegnato agli elementi di un vettore)?
-
Come bonus - eventuali problemi con il collegamento di diverse librerie da ciascuno di questi due script? (Sto usando librerie C che potrebbero non essere compatibili con C ++, e viceversa ..)
-
Se sto affrontando tutto questo totalmente nel modo sbagliato, qualcuno potrebbe indicarmi invece una direzione migliore?