在控件中加载dll!
我用了个dll来专门存放资源,比如字符串、位图等,加载dll的方法是动态加载(LoadLibrary、FreeLibrary),在两个应用程序中使用完全没问题,因为应该程序1与应该程序2分别将资源dll中的资源映射到了自己的内在空间。问题出在在两个控件中动态加载资源的情况下,此时两个控件共用资源dll中的资源,所以如果某一个控件退出(此时调用FreeLibrary,接着资源dll会释放自己的资源),则另一个控件再也无法取得所需的资源了,请问这个问题如何解决?
换句话说,在两个应用程序中,两次加载资源dll是独立的,而在控件中两次加载资源dll是共享的,其实只被加载了一次(我在dll的InitInstance函数中做了观察,该函数只运行了一次)。
问题点数:50、回复次数:2Top
1 楼xiaoqiqixiao(七七)回复于 2006-03-17 13:24:03 得分 50
设置一个全局变量DWORD m_dwRef = 0,在控件的构造函数中
if(m_dwRef == 0){
LoadLibrary(yourdllname);
}
m_dwRef++;
在控件的退出(估计是析造函数吧)中
m_dwRef--;
if(m_dwRef == 0){
FreeLibrary(yourdll);
}Top
2 楼yang79tao()回复于 2006-03-17 19:33:51 得分 0
DWORD m_dwRef这个变量是dll的还是控件的?Top




