Buongiorno,
sono appena entrato nel forum, mi trovo a dover utilizzare una funzione di una classe in C++ (per il quale ho pochissima esperienza) su una macchina virtuale Ubuntu.
Su questa macchina ho implementato questa libreria per generare delle fingerprint di file audio.
Funziona tutto bene, ma ora avrei bisogno di effettuare alcuni test più in profondità.
Nello specifico, vorrei poter passare alla funzione
Codegen(const float* pcm, unsigned int numSamples, int start_offset)
che si trova nel file Codegen.cxx un array di float da me generato, per verificare la fingerprint in uscita (e confrontarla con un'altra generata allo stesso modo da una libreria derivata da questa).
Per fare questo nella cartella /src della libreria ho aggiunto il seguente file:
ztest.cpp
#include "Codegen.h"
float sample[] = {0.2328124, -0.44754124, -0.29985702, -0.025578022, 0.77680266, 0.24578595, -0.5593387, -0.70831835, 0.80841076, 0.5401865, -0.04987991, 0.22590506, -0.22304022, -0.32349646, 0.056701064, 0.04828608, 0.29067707, -0.3870566, 0.88091457, 0.96539235, -0.32412112, 0.84661734, 0.12184203, -0.08874595, -0.03614521, -0.063005805, 0.09807551, -0.8738711, -0.4128102, 0.20638204, 0.382231, -0.3008684, -0.61689794, 0.8270527, 0.56563747, 0.7069404, 0.95453227, 0.14550817, -0.6304072, 0.51739144, -0.9287702, 0.11233115, 0.28806257, -0.3312515, -0.19979787, 0.58305144, 0.91676366, 0.18790865, -0.70886743, -0.93533623, -0.28562546, 0.7600589, 0.61751306, -0.73166716, 0.17852998, 0.5759449, -0.5457231, -0.8128933, 0.23393083, 0.5097649, -0.5200646, -0.024920821, 0.36022377, 0.3508358, -0.29587436, -0.18038285, 0.8774209, -0.26306593, 0.074834704, -0.5395713, -0.4930787, 0.10915184, 0.004393935, -0.26088107, -0.6066847, -0.8989202, 0.3169018, -0.68760455, 0.16897774, -0.7558155, 0.6655463, 0.71446514, 0.23913598, 0.45274258, 0.95612955, -0.37615538, 0.53502595, 0.46318507, -0.34103703, 0.32251132, -0.29144764, -0.95696414, -0.83254206, -0.19202161, -0.288548, 0.43386233, 0.29671597, -0.76028454, -0.5905427, -0.9878597, -0.5060253, -0.19020998, 0.22775769, -0.31577635, -0.10408783, 0.6943835, -0.38519347, -0.99944365, -0.2871747, 0.46989465, -0.4398954, -0.41507697, -0.099921465, 0.79788566, -0.3728429, 0.21325552, 0.20274913, 0.8615962, -0.5092701, -0.9891448, 0.59607565, 0.06886637, -0.77052796, -0.18430376, 0.2144264, -0.9509901, -0.5411892, 0.10881591, -0.9564545, 0.6226791, -0.46109557, 0.15200055, -0.920413, 0.90350306, -0.29125178, -0.5093752, -0.87508607, 0.21897721, -0.863088, 0.94941604, 0.8420944, -0.6323198, 0.0047278404, 0.12618625, -0.27251828, -0.3564042, 0.2181958, -0.5904881, -0.946013, -0.12941658, -0.0441885, 0.22854137, 0.9851574, -0.2534356, -0.3174045, -0.114607334, 0.55172324, 0.47473717, -0.41630232, 0.5030415};
float* audio = sample;
unsigned int numSamples =160;
int main()
{
Codegen * pCodegen = new Codegen(audio, numSamples, 0);
return 0;
}
compilandolo dalla cartella corretta con:
sudo g++ ztest.cpp
ed ottenendo il seguente risultato:
/tmp/ccgutWza.o: nella funzione "main":
ztest.cpp:(.text+0x31): riferimento non definito a "Codegen::Codegen(float const*, unsigned int, int)"
collect2: error: ld returned 1 exit status
purtroppo la mia esperienza con c++ è davvero minima, e mi sono fermato a questo errore (non riesco a capire se è un problema di come richiamo la funzione)
Ho guardato nel forum richieste simili ma non ho trovato modo di poter utilizzare i consigli a problematiche simili.
Cosa sto sbagliando?
Grazie mille
Luca