15 мая 2023 года "Исходники.РУ" отмечают своё 23-летие!
Поздравляем всех причастных и неравнодушных с этим событием!
И огромное спасибо всем, кто был и остаётся с нами все эти годы!

Главная Форум Журнал Wiki DRKB Discuz!ML Помощь проекту


Losing resource using LoadLibrary and FreeLibrary

Sanjay -- SGUPTA@aegonusa.com
Friday, January 19, 1996



I am having this strange problem. I have this MDI app in VC1.52 and a   
user DLL. In response to a menu command, I use LoadLibrary to load the   
DLL, then call a function from the DLL, and then use FreeLibrary to free   
the DLL. The function I call from the DLL does nothing but simply   
displays a small dialog box. What I find is that I lose resources just by   
LoadLibrary, calling a function which virtually does nothing, and then   
FreeLibrary. Does anybody know why do I lose resources. just by loading   
and freeing a user DLL.

I really need help in this. Thanks in advance!

Sanjay Gupta
SGUPTA@AEGONUSA.COM



Ron Birk -- rbirk@ctp.com
Tuesday, January 23, 1996

[Mini-digest: 4 responses]

> FreeLibrary. Does anybody know why do I lose resources. just by loading   
> and freeing a user DLL.

One common misstake is to forget to declare the WEP in the .def file. This
will cause resource leakage.

Ron

--
 /\/\   Ron Birk                        Email:     rbirk@ctp.com
/ /_ \  Horizontal Solutions            Tel:       +46 8 744 6119
\  / /  Cambridge Technology Partners   Fax:       +46 8 744 9933
 \/\/   Stockholm, Sweden               Voicemail: +1 617 374 2081

-----From: Amir Salzberg 

What do you mean by "displays a small dialog box"? Did you free the dialog
box resource?

-----From: sunil@teil.soft.net (Mahale Sunil Pramod)

Hello Sanjay

	In the question you need to specify under which operating you are

working. Since I had similar problems running under Windows 3.1. The 

resources used to be damaged but under Windows 95 it used to work perfectly.

SUNIL

-----From: Dave Tucker 

MSVC 1.52 shipped with a bug in the MFC USRDLL code where 3 pens were =
allocated but never released.  This was fixed with MSVC 1.52b.  This may =
be your problem if the DLL you are loading is an MFC USRDLL type.  If =
you don't have 1.52b you can place the following code in your USRDLL =
ExitInstance routine to free the pens.

	Note: you must include the MFC auxdata.h file to get access to the =
global auxData struct.

	#include 

	CMyDLL::ExitInstance()
	...

	::DeleteObject ( afxData.hpenBtnHilite );
	::DeleteObject ( afxData.hpenBtnShadow );
	::DeleteObject ( afxData.hpenBtnText );
	afxData.hpenBtnHilite =3D 0;
	afxData.hpenBtnShadow =3D 0;
	afxData.hpenBtnText =3D 0;
=09
	return CWinapp::ExitInstance();




Martijn Vels -- Vels0020@exact.nl
Tuesday, January 23, 1996


Well, I don't no if this is your problem, but check if the MFC-LibMain/WEP 
is called where cleanup is done.
We had some problems because LibMain/WEP calls came from the wrong object en 
library. (Import library made without /NOWEP and taken first by the 
linker....)

>M<
 ----------
From: owner-mfc-l
To: 'MFC-L'
Subject: Losing resource using LoadLibrary and FreeLibrary
Date: Friday, January 19, 1996 4:06PM



I am having this strange problem. I have this MDI app in VC1.52 and a
user DLL. In response to a menu command, I use LoadLibrary to load the
DLL, then call a function from the DLL, and then use FreeLibrary to free
the DLL. The function I call from the DLL does nothing but simply
displays a small dialog box. What I find is that I lose resources just by
LoadLibrary, calling a function which virtually does nothing, and then
FreeLibrary. Does anybody know why do I lose resources. just by loading
and freeing a user DLL.

I really need help in this. Thanks in advance!

Sanjay Gupta




| Вернуться в корень Архива |