Y compris les fichiers source à partir d'un autre C++ projet dans Eclipse CDT
J'ai un projet C++ sous Eclipse CDT qui utilise certaines fonctions de OpevCV et il compile en un executable et fonctionne très bien. Maintenant, je veux avoir un nouveau projet C++ qui utilise certaines des fonctions définies dans la première. Je ne peux pas avoir les deux pour compiler et lier ensemble.
J'ai #include "..."
dans les dossiers pertinents dans le nouveau projet, j'ai ajouté l'ancien projet pour les projets référencés de la nouveau projet et dans les paramètres de construction du nouveau projet, j'ai ajouté le dossier source de l'ancien projet comme un include (-I
gcc avec l'option).
J'ai joint une capture d'écran de mon Eclipse dans le cas où c'est utile:
L'erreur donnée par le compilateur est:
De construction cible: OtherProject
Invocation: GCC C++ Linker
g++ -o "OtherProject" ./src/foo.o
./src/foo.o: In function `main':
/home/max/opencvjni/OtherProject/Debug/../src/foo.rpc:13: undefined reference to seuil()'
collect2: ld a retourné 1 code de sortie
make: *** [OtherProject] Erreur 1
Voici le code à ceux d'autres fichiers dans les autres onglets de la capture d'écran:
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;
}
Seuil.h
#ifndef THRESHOLD_H_
#define THRESHOLD_H_
int threshold(void);
#endif /* THRESHOLD_H_ */[/code]
- Eclipse version: 3.7.2
- CDT version: 8.0.2.201202111925
- OS: Ubuntu 12.04
Merci de regarder mon post, si il n'y a aucun moyen de le faire, ou c'est juste plus judicieux de le faire d'une autre manière, n'hésitez pas à le dire.
Ce qui concerne
OriginalL'auteur Max Spencer | 2012-11-05
Vous devez vous connecter pour publier un commentaire.
Je cherchais une réponse aussi, mais les réponses précédentes n'ont pas résolu le problème. (Nick réponse a été utile).
Vous devez définir 2 choses:
Project->Properties->C/C++ general->Paths and Symbols
. Sélectionnez laSource Location
onglet et cliquez sur leLink Folder...
, Puis sélectionnez le dossier que vous souhaitez inclure.Project->Properties->C/C++ general->Paths and Symbols
. Sélectionnez laIncludes
onglet.Assurez-vous de sélectionner la bonne langue sur le menu de gauche (par exemple:
GNU C++
) et cliquez surAdd...
, Puis sélectionnez le dossier que vous souhaitez inclure.Remarque: je ne suis pas sûr que c'est nécessaire, mais quand j'ai créé le projet externe j'ai choisi de la "Bibliothèque Partagée" option dans l'assistant nouveau projet.
À assurez-vous que vous avez tout fait OK, allez à :
Project->Properties->C/C++ Build->Settings
. Sélectionnez laGCC C++ Linker
et assurez-vous que leAll options
contient "-L/your_folder_name".Répétez cette opération pour
GCC C++ Compiler
aussi.OriginalL'auteur Itay Gal
Aller à Projet->Propriétés->C/C++ général->Chemins d'accès et de Symboles. Sélectionnez l'Emplacement de la Source de l'onglet et cliquez sur le Lien " Dossier...". Vous devriez être en mesure de sélectionner le répertoire contenant le projet que vous souhaitez référencer. Tous les fichiers source pour que le projet sera inclus dans votre projet actuel. Fonctionne pour moi en tout cas.
OriginalL'auteur Nick Brett
Personnellement, j'aime CMake pour spécifier mes options de compilation. CMake projets peuvent également être importés dans Eclipse CDT. CMake permet de générer des fichier de créer des projets sur linux, mais aussi VS projets sur windows. Le OpenCV site web donne également une exemple sur la façon de l'utiliser avec CMake.
J'ai donné une autre façon de mettre en place un projet C++ qui peut être utilisé dans eclipse CDT. Les novices ont tendance à ne pas être au courant de CMake et essayez d'utiliser Eclipse projets dès qu'ils commencent à l'aide d'Eclipse. Il est facile à utiliser au début, mais plus difficile à maintenir dans le temps
C'était un système automatisé de commentaire avec un texte prédéfini à partir d'un travail sur l'examen. Quelqu'un marqué votre réponse pour la supprimer et je l'ai soutenu. Mon avis: Si vous voulez répondre à "X" à un "XY-problème", de le faire dans un commentaire.
OriginalL'auteur gvd