[C++] riferimento non definito a ...

Linguaggi di programmazione: php, perl, python, C, bash e tutti gli altri.
lookaffe
Prode Principiante
Messaggi: 2
Iscrizione: mercoledì 18 marzo 2020, 18:44
Desktop: Lubuntu
Distribuzione: Ubuntu 18.04.1 LTS x86_64
Sesso: Maschile

[C++] riferimento non definito a ...

Messaggio da lookaffe »

Buongiorno,
sono appena entrato nel forum, uso da poco Ubuntu ed al momento solo su una macchina virtuale.
Su questa macchina ho implementato questa libreria https://github.com/spotify/echoprint-codegen per generare delle fingerprint di file audio.
Funziona tutto bene, ma ora avrei bisogno di effettuare alcuni test più in profondità avendo purtroppo scarsissima esperienza in C++

Nello specifico, vorrei poter passare alla funzione

Codice: Seleziona tutto

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

Codice: Seleziona tutto

#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:

Codice: Seleziona tutto

sudo g++ ztest.cpp
ed ottenendo il seguente risultato:

Codice: Seleziona tutto

/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.
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
lookaffe
Prode Principiante
Messaggi: 2
Iscrizione: mercoledì 18 marzo 2020, 18:44
Desktop: Lubuntu
Distribuzione: Ubuntu 18.04.1 LTS x86_64
Sesso: Maschile

Re: [C++] riferimento non definito a ...

Messaggio da lookaffe »

Ok, credo di aver capito di aver sbagliato approccio.
con il comando

Codice: Seleziona tutto

sudo g++ ztest.cpp
sto compilando solo il file ztest.cpp. dovrei quindi aggiungere anche Codegen.cxx

Codice: Seleziona tutto

sudo g++ ztest.cpp Codegen.cxx
ma questo si porterebbe dietro la necessità di compilare anche tutti gli altri file, aggiungendoli uno per uno.
Utilizzerò quindi il MakeFile per compilarli tutti insieme e modificherò la libreria quel poco che basta per i test che mi serve.

Insomma era un errore di ignoranza...
Scrivi risposta

Ritorna a “Programmazione”

Chi c’è in linea

Visualizzano questa sezione: Rafbor e 14 ospiti