DLL类型

本文详细介绍了MFC类库的两种版本:动态和静态,并解释了在不同类型的项目(如EXE和DLL)中如何选择合适的MFC使用方式。通过实际案例分析,展示了在特定情况下选择静态MFC的好处及解决链接问题的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1 MFC类库。

   MFC 类库有两种版本,一种是动态的,在DLL中实现,一种是静态的,在LIB中实现。

 

当我们在编写一个EXE时,在向导中会要求我们选择“MFC的使用方式”,一种是“在共享DLL中使用MFC”, 一种是“在静态库中使用MFC”,一种是“使用标准windows库”.  "在共享DLL中使用MFC"是指该EXE调用MFC函数时,要到系统的MFC DLL中去找代码。“在静态库中使用MFC”是指当EXE使用系统LIB库的代码,该段代码编译链接后存在于EXE中。

“使用标准windows库”是指不使用MFC。

 

当我们在写一个DLL时,有两大类。一是纯win32 DLL. 在这种DLL中不使用MFC类。  另一类是使用MFC的DLL, 那么这种DLL用什么方式使用MFC呢? 和上面的EXE使用MFC的方式一样, 静态的就是生成的DLL中包含所要使用的MFC的代码,动态就是不包含。扩展的DLL和动态的一样,其中也不包含MFC代码。

 

 

我做的一个“OA 安全刻录项目”,该EXE loadlibrary一个getkey.dll, 如果我用“使用标准windows库”来生成这个getkey.dll, 那么该程序在某些机器上不能被执行,出现了“配置不对,不能执行之类的错误”,估计是因为该机器连基本的标准windows库都没有,所以想到了把该DLL改为“在静态库中使用MFC”,但是出现了某些函数不能链接的错误,比如coinitialize(). 后来加入了#pragma comment (lib, "ole32.lib")就OK了。

 

 

 

该项在"项目"-》“属性”-》“常规”-》“MFC的使用”。

 

 

另一个有用的项是“代码生成”-》“运行时库”。

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值