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

如题.目前我所理解的是,当我调用一个自己新建的hope类时1.在Tool--Options--Directories---Includefiles中添加hope.h所在路... 如题.
目前我所理解的是,当我调用一个自己新建的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个多小时没研究个啥出来...郁闷.................
展开
 我来答
11...4@qq.com
2012-11-30
知道答主
回答量:6
采纳率:0%
帮助的人:8.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就是这样,还有什么不懂可以再问
ysdoc
2012-11-27 · TA获得超过746个赞
知道小有建树答主
回答量:586
采纳率:60%
帮助的人:405万
展开全部
#include <xx.h>表示调用系统库文件,他的路径在用户环境变量(path)中.
#include "xx.h"表示调用用户指定库文件,需要用户在Tool--Options--Directories---Include files中添加路径。
追问
非常谢谢你的回答...不过你好像没有明白我的意思.
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式