2012-11-05 15 views
12

Ho un progetto C++ in Eclipse CDT che utilizza alcune funzioni di OpevCV e si compila in un eseguibile e funziona correttamente. Ora voglio avere un nuovo progetto C++ che usi alcune delle funzioni definite nel primo. Non riesco a far compilare e collegare i due insieme.Inclusione di file sorgente da un altro progetto C++ in Eclipse CDT

Io ho #include "..." nei file rilevanti nel nuovo progetto, ho aggiunto il vecchio progetto ai progetti di riferimento del nuovo progetto e nelle impostazioni di compilazione del nuovo progetto, ho aggiunto la cartella di origine del vecchio progetto come inclusione (opzione -I gcc).

Ho attaccato uno screenshot del mio Eclipse nel caso in cui è utile:

enter image description here

L'errore proposta dal compilatore è:

obiettivo di costruzione: OtherProject
Invocando: GCC C++ Linker
g ++ -o "OtherProject" ./src/foo.o
./src/foo.o: In funzione `main ':
/home/max/opencvjni/OtherProject/Debug/../src/foo.cpp:13: undefined reference to soglia()'
collect2: ld returned 1 exit stato
make: *** [OtherProject] Errore 1

Ecco il codice in quegli altri file nelle altre schede della schermata:

Threshold.cpp

#include <cv.h> 
#include <highgui.h> 
#include "Threshold.h" 

using namespace cv; 

int threshold(void) { 
    Mat img = imread("/home/max/opencvjni/monalisa.jpg", 0); 
    threshold(img, img, 127, 255, THRESH_BINARY); 
    imwrite("/home/max/opencvjni/monathresh.jpg", img); 
    return 0; 
} 

int main(void) { 
    threshold(); 
    return 0; 
} 

Threshold.h

#ifndef THRESHOLD_H_ 
#define THRESHOLD_H_ 

int threshold(void); 

#endif /* THRESHOLD_H_ */[/code] 
  • versione di Eclipse: 3.7.2 versione
  • CDT: 8.0.2.201202111925
  • OS: Ubuntu 12,04

Grazie per guardare il mio post, se non c'è modo di farlo, o è solo più sensato farlo in un altro modo, per favore non esitare a dirlo.

Saluti

risposta

-1

Personalmente, mi piace che CMake specifichi le mie opzioni di compilazione. I progetti CMake possono anche essere importati in Eclipse CDT. CMake consente di generare progetti di file make su linux, ma anche progetti VS su Windows. Il sito Web di OpenCV fornisce anche un example su come utilizzarlo con CMake.

+2

Questo non fornisce una risposta alla domanda. Per criticare o richiedere chiarimenti da un autore, lascia un commento sotto il loro post. – rkhb

+0

@rkhb Ho dato un modo alternativo di impostare un progetto C++ che può essere utilizzato in eclissi CDT. Gli utenti inesperti tendono a non essere consapevoli di CMake e cercano di utilizzare i progetti Eclipse non appena iniziano a utilizzare Eclipse. È facile da usare inizialmente ma è più difficile da mantenere nel tempo – gvd

+1

Questo era un commento automatico con testo predefinito da un'attività di revisione. Qualcuno ha segnalato la tua risposta per l'eliminazione e l'ho supportata. La mia opinione: se vuoi rispondere "X" a un "problema XY", fallo in un commento. – rkhb

4

Passare a Progetto-> Proprietà-> C/C++ generale-> Percorsi e simboli. Seleziona la scheda "Posizione sorgente" e fai clic sul pulsante "Collega cartella ...". Dovresti essere in grado di selezionare la directory contenente il progetto a cui vuoi fare riferimento. Tutti i file sorgente per quel progetto saranno inclusi nel tuo progetto attuale. Funziona per me comunque.

12

Anche io cercavo una risposta, ma le risposte precedenti non risolvevano il problema. (La risposta di Nick è stata utile). È necessario definire 2 cose:

  1. Vai a Project->Properties->C/C++ general->Paths and Symbols. Selezionare la scheda Source Location e fare clic su Link Folder..., quindi selezionare la cartella che si desidera includere.
  2. Vai a Project->Properties->C/C++ general->Paths and Symbols. Seleziona la scheda Includes. Assicurarsi di selezionare la lingua corretta nel menu a sinistra (ad esempio: GNU C++) e fare clic su Add..., quindi selezionare la cartella che si desidera includere.

Nota: Io non sono sicuro che sia necessario, ma quando ho creato il progetto esterno Ho selezionato l'opzione "Libreria condivisa" nel nuovo wizard di progetto.

Per assicurarsi di aver fatto tutto OK, andare a: Project->Properties->C/C++ Build->Settings. Selezionare GCC C++ Linker e assicurarsi che l'All options contenga "-L/your_folder_name". Ripeti anche per GCC C++ Compiler.

Problemi correlati