c++ - C++-没有规则来创建目标SaltPepper.o

标签 c++ compiler-errors target

我知道有几个这样的问题,到目前为止我找不到的答案似乎可以解决我的问题。

我正在使用 eclipse 。

我在main函数中编写了代码,并且工作正常。
然后,我将外部函数与主代码一起使用,现在我得到了一些有趣的错误。

#include "opencv2/highgui/highgui.hpp"
#include "opencv2/imgproc/imgproc.hpp"
#include <iostream>
#include <stdio.h>
#include <random>
#include <ctime>
#include <cstdlib>

using namespace std;
using namespace cv;
void  createSaltandPepper();

int main(int argc, char** argv) {

 createSaltandPepper();
 return 0;

}

不,因为我试图不再赘述,这是函数的外部:
void  createSaltandPepper() {
//mycode
}

至少这似乎不是拼写错误。

但是,错误是:
make all 
make: *** No rule to make target 'SaltPepper.o', needed by 'Display'. 

我确实想知道如果我的函数名为createSaltandPepper,为什么要尝试创建一个名为SaltPepper.o的标记。

有人可以帮我吗?

编辑:我没有自觉地创建一个makefile,因为我说我正在使用eclipse。
同样,只要代码在main函数内部而不是createSaltandPepper()内部,代码也可以正常工作。
我的文件名为DisplayImage.cpp,上面的代码在此文件中,包括函数createSaltandPepper();。
该文件中仅有的两个函数是main函数和createSaltandPepper();。
项目中没有其他源文件。

如果遇到这么愚蠢的情况,我感到很抱歉:我是Java程序员,对makefiles等一无所知。

看这个截图:

myeclipse

现在,我创建了一个新项目并将我的旧文件添加到其中,这次将其命名为Display.cpp

“全部构建”在subdir.mk中导致错误,显示为:
subdir.mk:18: recipe for target 'Display.o' failed
make: *** [Display.o] Error 1

该构建的完整错误消息如下:
make all 
Building file: ../Display.cpp
Invoking: GCC C++ Compiler
g++ -O0 -g3 -Wall -c -fmessage-length=0-std=c++11 -MMD -MP  -MF"Display.d"     -MT"Display.d" -o"Display.o" "../Display.cpp"
subdir.mk:18: recipe for target 'Display.o' failed
g++: error: argument to ‘-fmessage-length=’ should be a non-negative  integer  
make: *** [Display.o] Error 1

更新

我切换到Netbeans。
现在可以使用了。

最佳答案

首先,此错误与编译器无关,此错误消息是由生成系统生成的(在您的情况下为make)。基本上,eclipse似乎调用make,它找出文件之间的依赖关系,以及哪些文件需要重新编译,然后依次调用编译器进行编译。然后,每个C++源文件都被编译为目标文件.o(通常具有相同的名称:SaltPepper.cpp-> SaltPepper.o)。然后将所有目标文件与库链接在一起,以形成最终的可执行文件。

此特定的错误消息告诉您,可执行文件被指定为依赖于目标文件SaltPepper.o,但是生成系统不知道如何生成它。很可能没有对应的SaltPepper.cpp文件。因此,请检查该文件是否存在。如果不是,请检查项目的设置(如果是手动创建的,则检查Makefile的设置),并查看是否正确指定了所有cpp文件名。您应该将所有带有代码的cpp文件添加到项目中,并删除所有多余的cpp文件。

更新:请注意,构建系统在文件级别上运行。它对功能等一无所知,仅源文件。也许这就是困惑的根源。

关于c++ - C++-没有规则来创建目标SaltPepper.o,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35434049/

相关文章:

C++:将结构传递给 PThread

c++ - 自相关返回麦克风输入的随机结果(使用高通滤波器)

C++编译器不识别头文件

模板友元类的 C++ 错误和

java - 是否可以让 Ant 打印出特定目标的类路径?如果是这样,怎么做?

c++ - 作为模板参数和签名的函数指针

c++ - 将 Lua 函数 block 转换为 C 字符串

visual-studio-2010 - 未注册库时,无法使用引用的TLB编译.NET应用程序

ios - 删除后如何重新安装ProjectUITests?

ios - 在哪里指定我的应用程序支持的 iOS 版本