VC中.系统提供头文件.h和实现文件cpp编译时是如何产生关联的?

如题.
目前我所理解的是,当我调用一个自己新建的hope类时
1.在Tool--Options--Directories---Include files中添加hope.h所在路径 D:\c++\. (当然.hope.h和hope.cpp在同一个目录下.)
2.包含头文件hope.h,同时需要Add files to project,把hope.cpp加入到当前工程中去..
然后就可以使用了..
然后就到我想问的问题了..

当我们使用VC提供的类时.比如是CWnd..我们只需要#include <afxwin.h>就OK.
然后就是使用CWnd干活去...这里我们并没有执行上面说的第二步.也就是没有将afxwin.h对应的实现文件加入到工程中去..那么VC在编译的时候又是怎么知道他对应的是哪个实现文件呢?

这个问题的主要目的是...在我调用我自己写的类的时候能够像CWnd一样..直接包含hope.h就可以了..不需要还添加个什么hope.cpp到工程中去........怎么实现啊....谢谢.非常感谢.....研究了2个多小时没研究个啥出来...郁闷.................

mfc中CWnd包括其他类的成员方法真正的实现代码大部分是在动态链接库mfc42.dll中,你在使用mfc类库时除了包含afxwin.h头文件,还链接了mfc42.lib这样一个库文件(在afx.h头文件中 #pragma comment(lib,"mfc42.lib")),在链接阶段这些库文件会告诉链接程序(cl.exe)真正地实现代码在哪,这样你生成的程序.exe文件会依赖mfc42.dll这样一个模块(如果你使用mfc静态库就不需要了),你的程序在运行的时候会加载mfc42.dll到进程空间当中,在程序运行时调用CWnd的成员方法的地方会转到动态链接库中去,你可以创建一个动态链接库将你所写的类比如CHope导出(编译后会生成一个lib文件),然后在创建另外一个工程,添加一个CHope类引入声明的头文件,然后链接前面生成的lib文件,就可以使用
CHope类了,不需要hope.cpp文件,你生成的程序会依赖前面生成的dll文件,这样你的程序在运行的时候需要将hope.dll拷贝到.exe文件相同目录下,mfc就是这样,还有什么不懂可以再问
温馨提示:内容为网友见解,仅供参考
第1个回答  2012-11-27
#include <xx.h>表示调用系统库文件,他的路径在用户环境变量(path)中.
#include "xx.h"表示调用用户指定库文件,需要用户在Tool--Options--Directories---Include files中添加路径。追问

非常谢谢你的回答...不过你好像没有明白我的意思.

本回答被网友采纳

VC中.系统提供头文件.h和实现文件cpp编译时是如何产生关联的?
你在使用mfc类库时除了包含afxwin.h头文件,还链接了mfc42.lib这样一个库文件(在afx.h头文件中 #pragma comment(lib,"mfc42.lib")),在链接阶段这些库文件会告诉链接程序(cl.exe)真正地实现代码在哪,这样你生成的程序.exe文件会依赖mfc42.dll这样一个模块(如果你使用mfc静态库就不需要了),...

在VC++中头文件中的.h和.cp有着什么样的联系.(.h和.cpp前同名)
.h叫做头文件,它是不能被编译的。“#include”叫做编译预处理指令,可以简单理解成,在1.cpp中的#include"1.h"指令把1.h中的代码在编译前添加到了1.cpp的头部。每个.cpp文件会被编译,生成一个.obj文件,然后所有的.obj文件链接起来你的可执行程序就算生成了。发现了没有,你要在.h文件中严格...

C语言中.cpp与.h是如何连接的?
.h 和 .cpp 不是 连接\/链接 关系,而是包含关系。也就是说,在预编译期间,编译器把 .h 的文字内容,原原本本 插入.cpp 文件中,插入位置就在 #include 这句 宏命令处。文字内容 插入完毕,再编译 .cpp 系统的 .h 放在 系统文件夹们 里。系统文件夹路径 定义在环境变量 INCLUDE 里。自定义 ...

VC++中头文件".h"和源文件".cpp"的关系问题
我的b.cpp只要包含了a.h,也就把a.cpp中可以外部调用的申明了一便。

vc中一个".h"和".cpp"应该对应一个类吧?为什么有的.h文件中有两个类的...
一般情况下h里是类的定义部分,因为要实现面向对象的封装性,这个你应该可以理解吧,就是让别人只能看到类的声明部分,而看不到是如何实现的。cpp里放的是类的实现部分,一般情况下你是看不到cpp里面的内容的,但是VC公开了所有MFC类的源代码,所以你可以看到。一般情况下,一个h和cpp对应一个类,也...

Visual C++:如何关联.h和.cpp文件
不会有这种情况,除非是你这个文件被误删了,但类视图里没有及时更新,或者就是你的vc编译器有问题。那你现在先把原来的删除了,在重命名新文件添加进去就好了。

C++头文件和CPP怎么联系起来?
可以直接把CPP源文件和头文件添加到工程,就可以实现关联;h文件放声明,cpp文件要么实现h中的函数,要么是用h中的函数。不管是实现还是用,都需要知道返回值类型参数类型等来检查正确性(除非是同时声明和实现),这时候include一下头文件,编译的时候就可以找到声明了。h和cpp的名字可以不一样,习惯上...

c语言里面的编译和链接是怎么回事啊?
编译是把你输入的源代码生成目标代码(即:以.obj为后缀名的文件),连接是把.obj文件和系统库相连接(如:#include 中所声明的文件)。如果直接按run,如果源代码正确则是系统自动编译连接,要是源代码有错误则无法运行,并显示错误信息。

我下了一些vc++程序是用.h和.cpp分开写的怎样运行
首先要明白这些文件时什么文件,再用编译器,例如:VC6.0,Dev C++等编译环境中运行,文件扩张名是.h,代表的话头文件,一般是书写一些函数原型,以及一些在整个程序中常用到的结构体,频繁使用的函数说明,定义等等;文件扩张名为,cpp的,是C++中的源文件,也是最常用到的文件,每建立一个工程都要至少...

用VC++6.0编译C++程序,类的声明文件.h和类的实现文件.cpp是放在一个文 ...
用VC++6.0编译C++程序,类的声明文件.h和类的实现文件.cpp是放在一个文件中还是放在不同文件中,这个问题本身就有问题,什么放在同一个文件中,明明是两个文件。

相似回答
大家正在搜