MFC之静态调用DLL实现编辑ini配置文件

本文介绍了如何使用MFC在DLL工程中实现对ini配置文件的读写操作,包括读取键值、修改键值、删除键以及添加新键的功能。详细步骤包括创建DLL工程,定义接口头文件lib.h,并提供了静态调用示例。

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

关于ini配置文件操作的api,推荐博文C++操作.ini配置文件的API

题目描述如下:

程序的配置信息一般存储在一个ini文件中,当程序运行时会从ini文件中读取一些启动信息。程序运行过程中也会对这些配置信息进行修改以保存本次程序运行的相关数据。请编写一个简单的配置数据操作类,主要包括以下功能:

(1)读取ini文件中指定键的值。

(2)修改ini文件中某个键的值。

(3)删除ini文件中的某个键。

(4)添加新的键到ini文件中。

其实直接用MFC实现即可,但是为了训练一下DLL的调用方式,还是用DLL实现

1、利用vc++6.0新建DLL工程

lib.h

#define work2 _declspec(dllexport)

extern "C" work2 bool readKey(char* section,char* key,char* value,char* path);
extern "C" work2 bool changeKey(char* section,char* key,char* value,char* path);
extern "C" work2 bool deleteKey(char* section,char* key,char* pa
---------- Block 16516 at 0x016C7910: 8200 bytes ---------- Leak Hash: 0x3BE9F3C8, Count: 1, Total 8200 bytes Call Stack (TID 1080): ucrtbased.dll!malloc_dbg() mfc140ud.dll!0x78E1C19B() mfc140ud.dll!0x78E1C3F8() mfc140ud.dll!0x78E1C426() mfc140ud.dll!0x7921E889() mfc140ud.dll!0x79176A8F() mfc140ud.dll!0x792A2803() mfc140ud.dll!0x7925BFE4() mfc140ud.dll!0x78D50E5C() mfc140ud.dll!0x7907740B() mfc140ud.dll!0x79076734() mfc140ud.dll!0x78DB506C() mfc140ud.dll!0x78E18474() mfc140ud.dll!0x792623D5() mfc140ud.dll!0x7926670D() mfc140ud.dll!0x79256E47() mfc140ud.dll!0x79257E75() mfc140ud.dll!0x78F71DBD() USER32.dll!Ordinal2713() + 0x813 bytes USER32.dll!MsgWaitForMultipleObjectsEx() + 0x7CD bytes USER32.dll!MsgWaitForMultipleObjectsEx() + 0x270 bytes USER32.dll!SystemParametersInfoW() + 0x2C9 bytes ntdll.dll!KiUserCallbackDispatcher() + 0x36 bytes USER32.dll!GetWindowLongW() + 0x142D bytes UxTheme.dll!GetThemeAppProperties() + 0xBB bytes UxTheme.dll!Ordinal43() + 0x2507 bytes UxTheme.dll!Ordinal43() + 0x1738 bytes USER32.dll!GetWindowLongW() + 0x1559 bytes USER32.dll!IsChild() + 0x13E bytes USER32.dll!Ordinal2001() + 0x20C7 bytes USER32.dll!DefFrameProcW() + 0x1B bytes mfc140ud.dll!0x792A3C14() mfc140ud.dll!0x7925AC2C() mfc140ud.dll!0x78DE8596() mfc140ud.dll!0x792955A0() mfc140ud.dll!0x79262670() mfc140ud.dll!0x7926670D() mfc140ud.dll!0x79256E47() mfc140ud.dll!0x79257E75() mfc140ud.dll!0x78F71DBD() USER32.dll!Ordinal2713() + 0x813 bytes USER32.dll!MsgWaitForMultipleObjectsEx() + 0x7CD bytes USER32.dll!MsgWaitForMultipleObjectsEx() + 0x270 bytes USER32.dll!SystemParametersInfoW() + 0x2C9 bytes ntdll.dll!KiUserCallbackDispatcher() + 0x36 bytes USER32.dll!GetWindowLongW() + 0x142D bytes UxTheme.dll!GetThemeAppProperties() + 0xBB bytes UxTheme.dll!Ordinal43() + 0x2507 bytes UxTheme.dll!Ordinal43() + 0x1738 bytes USER32.dll!GetWindowLongW() + 0x1559 bytes USER32.dll!IsChild() + 0x13E bytes USER32.dll!Ordinal2001() + 0x20C7 bytes USER32.dll!DefFrameProcW() + 0x1B bytes mfc140ud.dll!0x792A3C14() mfc140ud.dll!0x79266752() mfc140ud.dll!0x79256E47() mfc140ud.dll!0x79257E75() mfc140ud.dll!0x78F71DBD() USER32.dll!Ordinal2713() + 0x813 bytes USER32.dll!MsgWaitForMultipleObjectsEx() + 0x7CD bytes Data: 00 00 00 00 CD CD CD CD 94 E7 CC 78 01 00 00 00 ........ ...x.... 00 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00 ........ ........ 00 00 00 00 30 DE 64 01 0C 00 01 00 00 CD CD CD ....0.d. ........ 00 00 00 00 00 00 00 00 04 E7 CC 78 78 E7 CC 78 ........ ...xx..x 00 00 00 00 FF FF FF FF FF FF FF FF CD CD CD CD ........ ........ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ........ ........ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ........ ........ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ........ ........ 00 00 00 00 00 00 00 00 18 7A 6C 01 CD CD CD CD ........ .zl..... CD CD CD CD CD CD CD CD CD CD CD CD CD CD CD CD ........ ........ CD CD CD CD CD CD CD CD CD CD CD CD CD CD CD CD ........ ........ CD CD CD CD CD CD CD CD CD CD CD CD CD CD CD CD ........ ........ CD CD CD CD CD CD CD CD CD CD CD CD CD CD CD CD ........ ........ CD CD CD CD CD CD CD CD CD CD CD CD CD CD CD CD ........ ........ CD CD CD CD CD CD CD CD CD CD CD CD CD CD CD CD ........ ........ CD CD CD CD CD CD CD CD CD CD CD CD CD CD CD CD ........ ........ “ICT.exe”(Win32): 已卸载“C:\Windows\SysWOW64\ExplorerFrame.dll” 线程 0x43f4 已退出,返回值为 0 (0x0)。 线程 0xa90 已退出,返回值为 0 (0x0)。 线程 0x2570 已退出,返回值为 0 (0x0)。 线程 0x5100 已退出,返回值为 0 (0x0)。 线程 0x5c64 已退出,返回值为 0 (0x0)。 Detected memory leaks! Dumping objects -> {162} normal block at 0x016456E8, 332 bytes long. Data: < > 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 {161} normal block at 0x01645570, 332 bytes long. Data: < > 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 {160} normal block at 0x016453F8, 332 bytes long. Data: < > 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 {159} normal block at 0x01645280, 332 bytes long. Data: < > 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 {158} normal block at 0x01645108, 332 bytes long. Data: < > 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 Object dump complete. No memory leaks detected. Visual Leak Detector is now exiting. 程序“[25396] ICT.exe”已退出,返回值为 0 (0x0)。 随意截取了一段,这是vld没有检测出来吗
最新发布
08-23
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值