DLL动态链接库是程序复用的重要方式,DLL可以导出函数,使函数被多个程序复用,DLL中的函数实现可以被修改而无需重新编译和连接使用该DLL的应用程序。作为一名面向对象的程序员,希望DLL可以导出类,以便在类的层次上实现复用。所幸的是,DLL确实也可以导出类。
然而事实却没这么简单,导出类的DLL在维护和修改时有很多地方必需很小心,增加成员变量、修改导出类的基类等操作都可能导致意想不到的后果,也许用户更新了最新版本的DLL库后,应用程序就再也不能工作了。这就是著名的DLLHell(DLL地狱)问题。
DLL地狱问题是怎么产生的呢?看下面的例子,假设DLL有一个导出类ClassD1:
class ClassD
{
public:
int GetInt();
private:
int m_i;
};
intClassD::GetInt()
{
return m_i;
}
应用程序使用