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个多小时没研究个啥出来...郁闷................. 展开
目前我所理解的是,当我调用一个自己新建的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个多小时没研究个啥出来...郁闷................. 展开
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就是这样,还有什么不懂可以再问
CHope类了,不需要hope.cpp文件,你生成的程序会依赖前面生成的dll文件,这样你的程序在运行的时候需要将hope.dll拷贝到.exe文件相同目录下,mfc就是这样,还有什么不懂可以再问
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询