首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >链接两个.cpp和一个.h文件

链接两个.cpp和一个.h文件
EN

Stack Overflow用户
提问于 2011-08-11 20:54:52
回答 7查看 68.5K关注 0票数 13

我正在做一个练习(来自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

代码语言:javascript
复制
void func1(void);
int func2(int i);
char func3(char c, int i, double d);
float func4(void);

func_ex.cpp

代码语言:javascript
复制
#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

代码语言:javascript
复制
#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,但我认为这并不重要)。

EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2011-08-11 20:58:03

听起来这个文件找不到合适的函数。头文件是否包含在两个文件中?你可以把它包括在内,比如:

代码语言:javascript
复制
#include "myheader.h"

您确保将两个文件编译在一起了吗?例如:

gcc -o MyProgramfile1.cpp文件2.cpp

票数 12
EN

Stack Overflow用户

发布于 2012-02-09 08:43:43

代码语言:javascript
复制
gcc -c func_ex.cpp -o func_ex.o
gcc func_ex_main.cpp func_ex.o -o func_ex_main
票数 8
EN

Stack Overflow用户

发布于 2014-10-12 19:08:40

对于那些像我这样可能正在使用IDE BloodShed Dev C++的人。

创建一个项目文件夹,然后继续将您的H文件和CPP文件放在项目文件夹中。

我遇到了上面提到的同样的问题,我得出的结论是,我的编译器只编译H文件,甚至不读取链接到它的CPP文件。当我将它们放在项目文件夹中时,我的编译器会将所有文件编译在一起,从而允许我的代码运行。

这里是为那些使用流血事件的人创建一个项目文件夹的链接。

http://www.horstmann.com/bigcpp/help/bloodshed/index.html

至于其他IDE用户,我认为问题是类似的。如果有人需要进一步详细说明,请告诉我。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7032709

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档