假设我定义了abc这个类
abc.h里面是类的定义
abc.cpp里面 先包含了abc.h,后面是各个成员函数的实现
visual studio里使用这个abc类的话,只需要包含abc.h文件,而如果用g++来编译的话则需要包含abc.cpp文件。微软是不是帮用户智能判断了一下,我感觉这样不太好啊。
------解决思路----------------------
VS 使用 project 来编译项目,在项目配置里面会有项目里面每一个 cpp 文件的编译方式。
所以不需要你手动处理。
而在 makefile 中,你需要添加每一个源文件。
------解决思路----------------------
看来lz不大了解c/c++的链接机制, 可以去网上搜一下. 不过MSC链接的确爽, gcc之类的有互相引用的静态库要用用-Xlinker 也是很蛋疼
------解决思路----------------------
这个你可以理解为VS编译器把你的编译过程给集成了,集成在.vcproj文件中,编译的时候当然也是通过这个文件和相关.h和cpp来编译,实际上底层跟makefile差不多,只是这个工作不必你来做罢了
------解决思路----------------------
当然不是,程序生成一般两个步骤
1是编译,要求是每个程序中使用的符号都必须能找到出处。
每个cpp文件中调用的函数必须找到出处,出处可能是cpp文件中定义的符号,可以是include进来的某个.h文件中的声明(编译阶段对应函数实现不是必须的)
2是连接,连接首先在当前模块中找是否有对应实现,如果没有,在项目的其他obj文件中找,然后,再到指定的库中找
如果一个功能块已经编译成库,那么,你要使用之,则简单的include对应的.h文件即可
------解决思路----------------------
lz说gcc需要源cpp文件,只是说明你的连接库设置不正确而已
------解决思路----------------------
.vcproj 本质上,就是个makefile
只是没有按照makefile 编写而已
VC5 .mak 也是工程文件的,
VC6 .prj 不知道记错了没有,
其实也是 makefile直接改扩展名,就可以当成 .mak
VC7 以后改变 文件组织方式,但是实质上,还是 makefile
------解决思路----------------------
g++和vs一样,都不需要cpp文件
除了h,vs还需要lib或者dll,g++则需要a或者so(如果是mingw/cygwin的话也是lib或dll)
命令差不多是这样子的
g++ main.cpp -o main -L库文件目录 -l库名称