尝试在header / cpp文件中使用函数

时间:2012-09-08 22:17:53

标签: c++

我有两个文件:

hello.h和hello.cpp

hello.h

#ifndef __HELLO_H__
#define __HELLO_H__

using namespace std;

void PrintMessage();

#endif

HELLO.CPP

#include <iostream>
#include "hello.h"

using namespace std;

void PrintMessage()
{
     cout << "I want to be displayed!";
}

现在,我想在新的.cpp文件中使用PrintMessage(),但我不断收到错误消息。这就是我正在做的事情:

printingmessage.cpp

#include <iostream>
#include "hello.h"

using namespace std;

int main()
{
     PrintMessage();
     return 0;
}

我只是做了一些公然错误的事情?我确实把它们放在同一个文件夹里;我认为它与Dev-C ++(我用来编写/编译/运行)有关,但我无法弄明白。有人有什么想法吗?


我在桌面上创建了一个文件夹,将所有三个文件放入其中,然后我尝试完全按原样编译printingmessage.cpp文件。这是我得到的错误:

[Linker error] Undefined reference to 'PrintMessage()' 

3 个答案:

答案 0 :(得分:0)

我不知道开发C ++,但我强烈建议您是否进行任何严格的编码来学习/移动到终端并使用make文件,或者更新的IDE,如视觉工作室。

这是一个你可以运行的短脚本,保存为bash.sh 像这样的东西

g++ hello.cpp -O2 -g -c 
g++ hello.o printmessage.cpp -Wall -O2 -o print

然后使用./print

运行它

答案 1 :(得分:0)

  

我认为它与Dev-C ++有关(我正在使用它   写/编译/运行),但我无法弄清楚。

我也这么认为。在幕后,必须发生以下事情:

  1. 这两个文件都是编译的。这会为每个*.obj文件创建一个*.cpp文件,并使用标题。
  2. 目标文件相互链接,可能与所需的库相关联。
  3. 你的问题在于第二步的“另一个”部分:代码编译,但链接失败。头文件在那时是无关紧要的。更准确地说,printingmessage.obj的链接器调用包含对该对象文件或任何默认库中未定义的函数的引用。最有可能的问题是由于*.cpp文件不属于同一个项目。您需要创建一个多源文件项目,您可以在其中链接多个目标文件。你如何使用Dev-C ++实现这一点可能在他们的手册中。

答案 2 :(得分:-1)

我不认为你必须输入int main我认为你必须输入

ClassName::ClassName(){
//mycode;
}