返回信息流1、本人电脑已经安装VS2015;
2、利用cl -EHsc xxx.cpp命令编译由一个文件构成的程序时出现下图的情况:
3、如果一个程序由两个.cpp文件构成又该怎么弄??
这是一条镜像帖。来源:北邮人论坛 / cpp / #89188同步于 2015/10/25
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖
[讨论][问题]在windows的命令行界面下如何编译、运行一个C++程
lbs
2015/10/25镜像同步4 回复
订阅后,新回复会通过你的通知中心匿名送达。
4 条回复
在main函数所在的文件里调用sum前已经声明为外部函数了,sum在另一个文件里定义的。
【 在 chenxiansf 的大作中提到: 】
: sum函数没定义?
没用过windows的cl,但linux上是这样做的:
比如有两个cpp:
// foo.cpp
int sum(int a, int b) {
return a+b;
}
// main.cpp
#include <iostream>
using namespace std;
int foo(int, int); // 声明
int main() {
int a = foo(3,4);
cout<<a<<endl;
return 0;
}
那么,最简单的办法是全都放在同一个命令之下一起编译。编译的命令就是:c++ -o main main.cpp foo.cpp 这样直接生成可执行文件“main”。
另一种方法是分别编译,然后链接。
c++ -c -o main.o main.cpp
c++ -c -o foo.o foo.cpp
c++ -o main main.o foo.o
前两行分别将两个cpp文件编译成目标文件main.o和foo.o,其中main.o引用了foo这个函数,但编译的时候不知道它在哪里。链接的时候,将main.o和foo.o链接在一起,形成可执行文件main。就是在链接的时候发现:“main.o里引用的foo函数在foo.o里”。
如果链接的时候少了某个.o,链接的时候就会报错。比如:
c++ -o main main.o
这时候链接器一定会抱怨“main.o引用了foo这个函数,但是我找不着它”。当然找不到,因为它在foo.o里,你没让链接器看foo.o。
windows应该类似。