在Eclipse CDT中包含来自另一个C++项目的源文件

Max*_*cer 15 c++ eclipse eclipse-cdt

我在Eclipse CDT中有一个C++项目,它使用了一些来自OpevCV的函数,它编译成一个可执行文件,工作正常.现在我想要一个新的C++项目,该项目使用第一个中定义的一些函数.我无法将两者编译并链接在一起.

我已经#include "..."在新项目的相关文件中,我已将旧项目添加到新项目的引用项目中,并且在新项目的构建设置中,我已将旧项目的源文件夹添加为包含(-Igcc选项).

我附上了Eclipse的截图,以防它有用:

在此输入图像描述

编译器给出的错误是:

构建目标:OtherProject
调用:GCC C++链接器
克++ -o "OtherProject" ./src/foo.o
./src/foo.o:在函数'主:
/home/max/opencvjni/OtherProject/Debug/../ src/foo.cpp:13:未定义引用threshold()'
collect2:ld返回1退出状态
make:***[OtherProject]错误1

以下是屏幕截图其他选项卡中其他文件中的代码:

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;
}
Run Code Online (Sandbox Code Playgroud)

Threshold.h

#ifndef THRESHOLD_H_
#define THRESHOLD_H_

int threshold(void);

#endif /* THRESHOLD_H_ */[/code]
Run Code Online (Sandbox Code Playgroud)
  • Eclipse版本:3.7.2
  • CDT版本:8.0.2.201202111925
  • 操作系统:Ubuntu 12.04

感谢您查看我的帖子,如果没有办法做到这一点,或者以另一种方式做事更为明智,请不要犹豫,这样说.

问候

Ita*_*Gal 15

我也在寻找答案,但之前的答案并没有解决问题.(尼克的回答很有帮助).你必须定义两件事:

  1. 去吧Project->Properties->C/C++ general->Paths and Symbols.选择Source Location选项卡Link Folder...,然后单击,然后选择要包括的文件夹.
  2. 去吧Project->Properties->C/C++ general->Paths and Symbols.选择Includes选项卡.确保在左侧菜单中选择了正确的语言(例如GNU C++:) Add...,然后单击,然后选择要包含的文件夹.

注意:我不确定是否有必要,但在创建外部项目时,我在新项目向导中选择了"共享库"选项.

为了确保你做的一切都好,请转到:Project->Properties->C/C++ Build->Settings.选择GCC C++ Linker并确保All options包含"-L/your_folder_name".也重复这个GCC C++ Compiler.


小智 7

转到项目 - >属性 - > C/C++ general->路径和符号.选择"源位置"选项卡,然后单击"链接文件夹..."按钮.您应该能够选择包含要引用的项目的目录.该项目的所有源文件都将包含在当前项目中.无论如何,对我有用.


gvd*_*gvd -1

我个人喜欢 CMake 来指定我的构建选项。CMake 项目也可以导入到 Eclipse CDT 中。CMake 允许您在 Linux 上生成 make 文件项目,也可以在 Windows 上生成 VS 项目。OpenCV 网站还提供了如何将其与 CMake 一起使用的示例。

  • 这并没有提供问题的答案。要批评或要求作者澄清,请在其帖子下方发表评论。 (3认同)