win32 dll 和 MFC dll 的区别讨论 进者有分 大家好win32的dll和MFC编写的dll,有什么区别,就拿键盘钩子类型的dll来说 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 MFC DLL要包含MFC相关代码,DLL文件要稍大一些,占内存也多一些,加载时要执行MFC的初始化,加载时间稍长一些。 钩子这种DLL用不到MFC的东西的,win32 dll就够了 Win32 dll不能使用MFC的类库, 也就是不能使用MFC所提供的功能 MFC DLL又分2种1. 标准MFC DLL 可以使用MFC类库 但是不能输出类 2. 扩展MFC DLL 可以输出类==================ZT:MFC DLL 有三种形式的MFC DLL(在该DLL中可以使用和继承已有的MFC类)可供 选择,即Regular statically linked to MFC DLL(标准静态链接MFC DLL)和R egular using the shared MFC DLL(标准动态链接MFC DLL)以及Extension MF C DLL(扩展MFC DLL)。第一种DLL的特点是,在编译时把使用的MFC代码加入到 DLL中,因此,在使用该程序时不需要其他MFC动态链接类库的存在,但占用磁盘 空间比较大;第二种DLL的特点是,在运行时,动态链接到MFC类库,因此减少了 空间的占用,但是在运行时却依赖于MFC动态链接类库;这两种DLL既可以被MFC程 序使用也可以被Win32程序使用。第三种DLL的特点类似于第二种,做为MFC类库的 扩展,只能被MFC程序使用。Win32 DLL的入口和出口函数都是DLLMainBOOL WINAPI DllMain(HINSTANCE hinstDLL,DWORD fdwReason, LPVOID lpvReserved);其中,第一个参数表示DLL的实例句柄;第三个参数系统保留;第二个参数指明了当前调用该动态连接库的状态,它有四个可能的值:DLL_PROCESS_ATTACH(进程载入)、DLL_THREAD_ATTACH(线程载入)、DLL_THREAD_DETACH(线程卸载)、DLL_PROCESS_DETACH(进程卸载)。在DLLMain函数中可以通过对传递进来的这个参数的值进行判别,根据不同的参数值对DLL进行必要的初始化或清理工作。由于在Win32环境下,所有进程的空间都是相互独立的,这减少了应用程序间的相互影响,但大大增加了编程的难度。当进程在动态加载DLL时,系统自动把DLL地址映射到该进程的私有空间,而且也复制该DLL的全局数据的一份拷贝到该进程空间,每个进程所拥有的相同的DLL的全局数据其值却并不一定是相同的。当DLL内存被映射到进程空间中,每个进程都有自己的全局内存拷贝,加载DLL的每一个新的进程都重新初始化这一内存区域,也就是说进程不能再共享DLL。因此,在Win32环境下要想在多个进程中共享数据,就必须进行必要的设置。一种方法便是把这些需要共享的数据单独分离出来,放置在一个独立的数据段里,并把该段的属性设置为共享,建立一个内存共享的DLL。============Windows使用DLLs在二进制级共享代码。这也是Windows程序运行的关键——重用kernel32.dll, user32.dll等。但DLLs是针对C接口而写的,它们只能被C或理解C调用规范的语言使用。由编程语言来负责实现共享代码,而不是由DLLs本身。这样的话DLLs的使用受到限制。MFC引入了另外一种MFC扩展DLLs二进制共享机制。但它的使用仍受限制——只能在MFC程序中使用。 我感觉MFC写的dll最大特点是没有DllMain 1:mfc 是微软做的编程库,由一系列类,对象组成,主要对windows系统apix进行了封装。2:win32 dll 主要是windows系统api;3: 用mfc写dll,编程难度小,程序运行效率底4:用win32写dll,编程难度大,但程序运行效率高 http://blog.csdn.net/na_he/archive/2008/05/07/2408655.aspx这个是我的一片网摘了,都是讲dll的了,呵呵! 再者,MFC编写的dll需要MFC自身带的一些动态链接库支持,所以在没有安装MFC的机子上是不能被调用的 如何判断编辑框获取焦点,速度来帮忙啊 一个char类型的变量多线程访问修改是不是不需要加锁互斥呢 一个有关VC7.0的IDE的问题 关于网络事件的一些疑惑 请教NetFileEnum的用法,我想取得局域网内机器的共享目录 请问个在DLL中使用线程的问题,困饶我一天了. 求教:怎样才能对AVI图像的局部区域截图 一个串口超时的问题!!! 请教各位关于VC 托盘气泡的问题 能用不同的进程共享hdc、hbmp吗? 请教WTL方面的问题 关于一个结构体的问题?
MFC DLL又分2种
1. 标准MFC DLL 可以使用MFC类库 但是不能输出类
2. 扩展MFC DLL 可以输出类==================ZT:MFC DLL 有三种形式的MFC DLL(在该DLL中可以使用和继承已有的MFC类)可供 选择,即Regular statically linked to MFC DLL(标准静态链接MFC DLL)和R egular using the shared MFC DLL(标准动态链接MFC DLL)以及Extension MF C DLL(扩展MFC DLL)。第一种DLL的特点是,在编译时把使用的MFC代码加入到 DLL中,因此,在使用该程序时不需要其他MFC动态链接类库的存在,但占用磁盘 空间比较大;第二种DLL的特点是,在运行时,动态链接到MFC类库,因此减少了 空间的占用,但是在运行时却依赖于MFC动态链接类库;这两种DLL既可以被MFC程 序使用也可以被Win32程序使用。第三种DLL的特点类似于第二种,做为MFC类库的 扩展,只能被MFC程序使用。Win32 DLL的入口和出口函数都是DLLMainBOOL WINAPI DllMain(HINSTANCE hinstDLL,DWORD fdwReason, LPVOID lpvReserved);其中,第一个参数表示DLL的实例句柄;第三个参数系统保留;第二个参数指明了当前调用该动态连接库的状态,它有四个可能的值:DLL_PROCESS_ATTACH(进程载入)、DLL_THREAD_ATTACH(线程载入)、DLL_THREAD_DETACH(线程卸载)、DLL_PROCESS_DETACH(进程卸载)。在DLLMain函数中可以通过对传递进来的这个参数的值进行判别,根据不同的参数值对DLL进行必要的初始化或清理工作。由于在Win32环境下,所有进程的空间都是相互独立的,这减少了应用程序间的相互影响,但大大增加了编程的难度。当进程在动态加载DLL时,系统自动把DLL地址映射到该进程的私有空间,而且也复制该DLL的全局数据的一份拷贝到该进程空间,每个进程所拥有的相同的DLL的全局数据其值却并不一定是相同的。当DLL内存被映射到进程空间中,每个进程都有自己的全局内存拷贝,加载DLL的每一个新的进程都重新初始化这一内存区域,也就是说进程不能再共享DLL。因此,在Win32环境下要想在多个进程中共享数据,就必须进行必要的设置。一种方法便是把这些需要共享的数据单独分离出来,放置在一个独立的数据段里,并把该段的属性设置为共享,建立一个内存共享的DLL。============Windows使用DLLs在二进制级共享代码。这也是Windows程序运行的关键——重用kernel32.dll, user32.dll等。但DLLs是针对C接口而写的,它们只能被C或理解C调用规范的语言使用。由编程语言来负责实现共享代码,而不是由DLLs本身。这样的话DLLs的使用受到限制。
MFC引入了另外一种MFC扩展DLLs二进制共享机制。但它的使用仍受限制——只能在MFC程序中使用。
2:win32 dll 主要是windows系统api;
3: 用mfc写dll,编程难度小,程序运行效率底
4:用win32写dll,编程难度大,但程序运行效率高
这个是我的一片网摘了,都是讲dll的了,呵呵!