2019/2/1关于g++编译多个文件的问题

CPrimer中建议在头文件声明函数,在源文件定义函数。这样能够确保同一函数的所有声明一致,而且一旦我们想要改变函数接口只要改变一条声明即可。

但是在实现过程中出现了一下问题。现记录,为进一步探究编译器工作方式作为知识储备。

//Myprint.h

#ifndef MYPRINT_H_INCLUDED
#define MYPRINT_H_INCLUDED
#include <iostream>
using namespace std;

void Myprint();


#endif // MYPRINT_H_INCLUDED

//Myprint.cpp
#include "Myprint.h"
#include <iostream>

using namespace std;

void Myprint()
{
    cout << "my own function!";

}
//main.cpp
#include <iostream>
#include "Myprint.h"

using namespace std;

int main()
{
    Myprint();

    return 0;
}

调用自定义函数,在编译时发生一下错误  undefined reference to "Myprint.cpp"...ld returned 1 exit status

通过查阅资料找出原因,参考:https://blog.csdn.net/dyzhen/article/details/79815667

通过分析,我认为是编译器找不到Myprint.cpp的函数实现主体导致的编译错误。决定手动尝试g++/gcc编译

参考https://www.cnblogs.com/mjk961/p/7862170.html(g++编译多文件)

       https://www.cnblogs.com/testlife007/p/6555404.html(gcc命令与参数)

 

 由于我没有保存Myprint.cpp文件,所以编译时出现了No such file or directory 的错误!

在修正后,采用 g++ -c main.cpp 生成 main.o文件;

                          g++ -c Myprint.cpp 生成 Myprint.o文件;

                          g++ main.o Myprint.o -o test 生成可执行文件 test.exe;

                          执行test .exe输出如图。 

也可以采用 g++ -o Own_Fuction(上级路径) main.cpp Myprint.cpp 一歩到位直接生成可执行文件。

  • 解决方法:手动编译分开编译或在编译前加上路径

  • ps:在codeblocks中编译多个文件,应该右击project文件,点击add_file;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值