2012-11-05 58 views
12

Tôi có một dự án C++ trong CDT Eclipse sử dụng một số hàm từ OpevCV và nó biên dịch thành một tệp thực thi và hoạt động tốt. Bây giờ tôi muốn có một dự án C++ mới sử dụng một số hàm được định nghĩa trong phần đầu tiên. Tôi không thể khiến hai người biên dịch và liên kết với nhau.Bao gồm các tệp nguồn từ một dự án C++ khác trong Eclipse CDT

Tôi có #include "..." trong các tệp có liên quan trong dự án mới, tôi đã thêm dự án cũ vào dự án được tham chiếu của dự án mới và trong cài đặt bản dựng của dự án mới, tôi đã thêm thư mục nguồn của dự án cũ dưới dạng bao gồm (-I tùy chọn gcc).

Tôi đã kèm theo một ảnh chụp màn hình của Eclipse của tôi trong trường hợp nó rất hữu ích:

enter image description here

Các lỗi được đưa ra bởi trình biên dịch là:

Xây dựng mục tiêu: OtherProject
Gọi: GCC C++ Linker
g ++ -o "Dự án khác" ./src/foo.o
./src/foo.o: Trong hàm `main ':
/home/max/opencvjni/OtherProject/Debug/../src/foo.cpp:13: không xác định tham chiếu đến ngưỡng() '
collect2: ld trả lại 1 trạng thái thoát
make: *** [OtherProject] lỗi 1

đây là mã trong các tập tin khác trong các tab khác của ảnh chụp màn hình:

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] 
  • Eclipse phiên bản: 3.7.2
  • CDT phiên bản: 8.0.2.201202111925
  • Hệ điều hành: Ubuntu 12,04

Cảm ơn bạn đã nhìn bài của tôi, nếu không có cách nào để làm điều này, hoặc nó chỉ là hợp lý hơn để làm điều đó một cách khác, xin vui lòng không ngần ngại để nói như vậy.

Kính trọng

Trả lời

-1

Cá nhân tôi thích CMake để chỉ định tùy chọn xây dựng của tôi. Các dự án CMake cũng có thể được nhập vào CDT Eclipse. CMake cho phép bạn tạo các dự án tạo tập tin trên Linux, nhưng cũng có các dự án VS trên các cửa sổ. Trang web OpenCV cũng cung cấp một số example về cách sử dụng nó với CMake.

+2

Điều này không cung cấp câu trả lời cho câu hỏi. Để phê bình hoặc yêu cầu làm rõ từ tác giả, hãy để lại nhận xét bên dưới bài đăng của họ. – rkhb

+0

@rkhb Tôi đã đưa ra một cách khác để thiết lập một dự án C++ có thể được sử dụng trong CDT nhật thực. Người dùng Novice có xu hướng không nhận thức được CMake và cố gắng sử dụng các dự án Eclipse ngay sau khi họ bắt đầu sử dụng Eclipse. Nó rất dễ sử dụng ban đầu nhưng khó khăn hơn để duy trì theo thời gian – gvd

+1

Đây là một nhận xét tự động với văn bản được xác định trước từ một nhiệm vụ đánh giá. Ai đó đã gắn cờ câu trả lời của bạn cho việc xóa và tôi đã hỗ trợ nó. Ý kiến ​​của tôi: Nếu bạn muốn trả lời "X" cho một "vấn đề XY", hãy làm điều đó trong một bình luận. – rkhb

4

Đi tới Project-> Properties-> C/C++ general-> Paths and Symbols. Chọn tab 'Vị trí nguồn' và nhấp vào nút 'Liên kết thư mục ...'. Bạn sẽ có thể chọn thư mục chứa dự án bạn muốn tham chiếu. Tất cả các tệp nguồn cho dự án đó sẽ được bao gồm trong dự án hiện tại của bạn. Làm việc cho tôi anyway.

12

Tôi cũng đang tìm câu trả lời nhưng các câu trả lời trước không giải quyết được vấn đề. (Câu trả lời của Nick rất hữu ích). Bạn phải xác định 2 điều:

  1. Đến Project->Properties->C/C++ general->Paths and Symbols. Chọn tab Source Location và nhấp vào Link Folder..., Sau đó chọn thư mục bạn muốn bao gồm.
  2. Đi tới Project->Properties->C/C++ general->Paths and Symbols. Chọn tab Includes. Đảm bảo bạn chọn ngôn ngữ chính xác trên menu bên trái (ví dụ: GNU C++) và nhấp vào Add..., Sau đó chọn thư mục bạn muốn đưa vào.

Lưu ý: Tôi không chắc chắn cần thiết nhưng khi tạo dự án bên ngoài, tôi đã chọn tùy chọn "Thư viện được chia sẻ" trong trình thủ thuật dự án mới.

Để đảm bảo bạn đã làm mọi thứ OK, hãy truy cập: Project->Properties->C/C++ Build->Settings. Chọn số GCC C++ Linker và đảm bảo rằng All options chứa "-L/your_folder_name". Lặp lại điều này cho GCC C++ Compiler.

Các vấn đề liên quan