我有两个文件:
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()'
答案 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 ++有关(我正在使用它 写/编译/运行),但我无法弄清楚。
我也这么认为。在幕后,必须发生以下事情:
*.obj
文件创建一个*.cpp
文件,并使用标题。你的问题在于第二步的“另一个”部分:代码编译,但链接失败。头文件在那时是无关紧要的。更准确地说,printingmessage.obj
的链接器调用包含对该对象文件或任何默认库中未定义的函数的引用。最有可能的问题是由于*.cpp
文件不属于同一个项目。您需要创建一个多源文件项目,您可以在其中链接多个目标文件。你如何使用Dev-C ++实现这一点可能在他们的手册中。
答案 2 :(得分:-1)
我不认为你必须输入int main
我认为你必须输入
ClassName::ClassName(){
//mycode;
}