MFC DLL更名输出问题

本文探讨了在Visual C++ 6.0环境下,通过修改设置来实现不同版本MFC标准DLL之间的切换问题。作者尝试通过编译指令指定不同的调试(D版)和发布(R版)版本的DLL,但发现无论哪种配置都链接到了同一版本的DLL。通过对问题的深入分析,最终发现了解决方案:屏蔽自动生成的def文件中指定DLL名称的行。

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

一次,一个MFC标准dll,在VC6的setting中,把D版的Dll更名输出,然后采用不同版链接不同dll,如下

//编译dll时设定_DLL_LTimeCount
#if !defined(_DLL_LTimeCount) && !defined(_JKSLTimeCount_MANUALLOAD) && !defined(_JKSALLDLLS_MANUALLOAD)
#ifdef _DEBUG
#pragma comment(lib,"LTimeCountD.lib")//对应LTimeCountD.dll
#pragma message("LTimeCountD.lib is linked./n")
#else
#pragma comment(lib,"LTimeCount.lib")//对应LTimeCount.dll
#pragma message("LTimeCount.lib is linked./n")
#endif
#define _JKSLTimeCount_MANUALLOAD
#endif

但是发现居然每次链接的都是 LTimeCount.dll,不管是R版还是D版

然而Win32 DLL就没有这个问题

经过分析发现,是由于MFC DLL工程中自动生成了一个def文件,其中指定了DLL的名称,

所以只要把这行屏蔽了就行了。如下

; LTimeCount.def : Declares the module parameters for the DLL.

;LIBRARY      "LTimeCount"   //屏蔽这一行
DESCRIPTION  'LTimeCount Windows Dynamic Link Library'

EXPORTS
    ; Explicit exports can go here

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值