2012-11-05 9 views
12

Mam projekt C++ w Eclipse CDT, który używa niektórych funkcji z OpevCV i kompiluje się do pliku wykonywalnego i działa dobrze. Teraz chcę mieć nowy projekt C++, który wykorzystuje niektóre funkcje zdefiniowane w pierwszym. Nie mogę zmusić tych dwóch do kompilacji i połączenia ze sobą.W tym pliki źródłowe z innego projektu C++ w Eclipse CDT

Mam #include "..." w odpowiednich plikach w nowym projekcie, dodałem stary projekt do przywołanych projektów nowego projektu oraz w ustawieniach kompilacji nowego projektu, dodałem folder źródłowy stary projekt jako opcję włączania (-I opcja gcc).

Mam załączeniu zrzut moim Eclipse w przypadku jest to pomocne:

enter image description here

Błąd podane przez kompilator jest:

cel budynku: OtherProject
Wywoływanie: GCC C++ Linker
g ++ -o "Inny projekt" ./src/foo.o
./src/foo.o: W funkcji "główny":
/home/max/opencvjni/OtherProject/Debug/../src/foo.cpp:13: niezdefiniowane odniesienia do progu()”
collect2: ld zwróconym 1 wyjście statusu
make: *** [OtherProject] błąd 1

Oto kod w tych innych plików w innych zakładkach ekranu:

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] 
  • wersja Eclipse: 3.7.2 wersja
  • CDT: 8.0.2.201202111925
  • OS: Ubuntu 12,04

Dziękujemy za patrząc na mój post, jeśli nie ma sposobu, aby to zrobić, lub po prostu rozsądniej jest zrobić to inaczej, proszę, nie wahaj się powiedzieć.

Pozdrowienia

Odpowiedz

-1

ja osobiście jak CMake określić moje opcje kompilacji. Projekty CMake można również importować do Eclipse CDT. CMake pozwala generować projekty plików na Linuksie, ale także projekty VS w oknach. Strona internetowa OpenCV podaje również example, jak z niej korzystać w CMake.

+2

To nie daje odpowiedzi na pytanie. Aby skrytykować lub poprosić o wyjaśnienie od autora, pozostaw komentarz pod swoim postem. – rkhb

+0

@rkhb Podałem alternatywny sposób konfiguracji projektu C++, który może być użyty w Eclipse CDT. Początkujący użytkownicy zwykle nie są świadomi CMake i próbują korzystać z projektów Eclipse, gdy tylko zaczną korzystać z Eclipse. Jest łatwy w użyciu, ale trudniejszy do utrzymania w czasie. – gvd

+1

To był automatyczny komentarz z predefiniowanym tekstem z zadania przeglądu. Ktoś zgłosił twoją odpowiedź na usunięcie i ja ją poparłem. Moja opinia: jeśli chcesz odpowiedzieć "X" na "problem XY", zrób to w komentarzu. – rkhb

4

Przejdź do Project-> Properties-> C/C++ general-> Paths and Symbols. Wybierz kartę "Lokalizacja źródła" i kliknij przycisk "Link Folder ...". Powinieneś być w stanie wybrać katalog zawierający projekt, do którego chcesz się odwoływać. Wszystkie pliki źródłowe tego projektu zostaną uwzględnione w bieżącym projekcie. Dla mnie działa.

12

Szukałem również odpowiedzi, ale poprzednie odpowiedzi nie rozwiązały problemu. (Odpowiedź Nicka była pomocna). Musisz zdefiniować 2 rzeczy:

  1. Przejdź do Project->Properties->C/C++ general->Paths and Symbols. Wybierz kartę Source Location i kliknij przycisk Link Folder..., a następnie wybierz folder, który chcesz uwzględnić.
  2. Przejdź do Project->Properties->C/C++ general->Paths and Symbols. Wybierz kartę Includes. Upewnij się, że wybrałeś właściwy język w menu po lewej stronie (na przykład: GNU C++) i kliknij Add..., Następnie wybierz folder, który chcesz uwzględnić.

Uwaga: Nie jestem pewien, że to konieczne, ale kiedy stworzył projekt zewnętrznego Wybrałem opcję „Shared Library” w kreatorze nowego projektu.

Aby upewnić się, że wszystko zostało wykonane poprawnie, przejdź do: Project->Properties->C/C++ Build->Settings. Wybierz GCC C++ Linker i upewnij się, że All options zawiera "-L/your_folder_name". Powtórz to również dla GCC C++ Compiler.

Powiązane problemy