佚名通过本文主要向大家介绍了如何注册dll控件,dll控件,vb调用dll控件,dll控件常规安装方法,注册dll控件等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
问题: 在控件中加载dll!
描述:
解决方案1:
描述:
我用了个dll来专门存放资源,比如字符串、位图等,加载dll的方法是动态加载(LoadLibrary、FreeLibrary),在两个应用程序中使用完全没问题,因为应该程序1与应该程序2分别将资源dll中的资源映射到了自己的内在空间。问题出在在两个控件中动态加载资源的情况下,此时两个控件共用资源dll中的资源,所以如果某一个控件退出(此时调用FreeLibrary,接着资源dll会释放自己的资源),则另一个控件再也无法取得所需的资源了,请问这个问题如何解决?
换句话说,在两个应用程序中,两次加载资源dll是独立的,而在控件中两次加载资源dll是共享的,其实只被加载了一次(我在dll的InitInstance函数中做了观察,该函数只运行了一次)。
解决方案1:
设置一个全局变量DWORD m_dwRef = 0,在控件的构造函数中
if(m_dwRef == 0){
LoadLibrary(yourdllname);
}
m_dwRef++;
在控件的退出(估计是析造函数吧)中
m_dwRef--;
if(m_dwRef == 0){
FreeLibrary(yourdll);
}