我正在做一个练习(来自C++的第三章),但是我在连接两个.cpp文件时遇到了问题。
这是一项工作:
创建一个头文件(扩展名为“.h”)。在这个文件中,通过更改参数列表和返回值来声明一组函数: void、char、int和float。现在创建一个包含头文件的.cpp文件,并为所有这些函数创建定义。每个定义都应该简单地打印出函数名、参数列表和返回类型,这样您就知道它已经被调用了。创建第二个包含头文件并定义int ( )的.cpp文件,其中包含对所有函数的调用。编译并运行您的程序。
我已经创建了这三个文件,但是当我试图编译编译器时,请给出以下错误:
未定义的对
func1()' undefined reference tofunc2(Int)‘>的引用
对func3(char, int, double)'| undefined reference tofunc4()的未定义引用
||===构建完成:4错误,0警告===|
为什么它找不到函数声明?
##EDIT
这是我的三个档案:
func_ex.h
void func1(void);
int func2(int i);
char func3(char c, int i, double d);
float func4(void);func_ex.cpp
#include "func_ex.h"
using namespace std;
void func1(void) {
cout << "void func1(void)" << endl;
}
int func2(int i) {
cout << "int func2(int i)" << endl;
}
char func3(char c, int i, double d) {
cout << "func3(char c, int i, double d)" << endl;
}
float func4(void) {
cout << "func4(void)" << endl;
}func_ex_main.cpp
#include "func_ex.h"
#include <iostream>
using namespace std;
int main(int argc, char* argv[]) {
func1();
int i;
func2(i);
char c; double d;
func3(c, i, d);
func4();
}我是usig作为编译器(代码::块作为IDE,但我认为这并不重要)。
发布于 2011-08-11 20:58:03
听起来这个文件找不到合适的函数。头文件是否包含在两个文件中?你可以把它包括在内,比如:
#include "myheader.h"您确保将两个文件编译在一起了吗?例如:
gcc -o MyProgramfile1.cpp文件2.cpp
发布于 2012-02-09 08:43:43
gcc -c func_ex.cpp -o func_ex.o
gcc func_ex_main.cpp func_ex.o -o func_ex_main发布于 2014-10-12 19:08:40
对于那些像我这样可能正在使用IDE BloodShed Dev C++的人。
创建一个项目文件夹,然后继续将您的H文件和CPP文件放在项目文件夹中。
我遇到了上面提到的同样的问题,我得出的结论是,我的编译器只编译H文件,甚至不读取链接到它的CPP文件。当我将它们放在项目文件夹中时,我的编译器会将所有文件编译在一起,从而允许我的代码运行。
这里是为那些使用流血事件的人创建一个项目文件夹的链接。
http://www.horstmann.com/bigcpp/help/bloodshed/index.html
至于其他IDE用户,我认为问题是类似的。如果有人需要进一步详细说明,请告诉我。
https://stackoverflow.com/questions/7032709
复制相似问题