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

2024-12-17 09:17:35
推荐回答(2个)
回答1:

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就是这样,还有什么不懂可以再问

回答2:

#include 表示调用系统库文件,他的路径在用户环境变量(path)中.
#include "xx.h"表示调用用户指定库文件,需要用户在Tool--Options--Directories---Include files中添加路径。