还有:我写了两个dll项目,一个叫Core.dll,另一个叫Network.dll。在主要(不是核心而不是网络)项目中,我使用类指针 NetworkInterface*。其中 NetworkInterface 是一个纯虚拟类。运行主项目后,我发现 Core.dll 已加载但 Network.dll 没有加载(输出窗口显示)。主要项目依赖于核心和网络。
我没有使用函数 LoadLibrary()。
谢谢。
最好的祝福。
陈
如果 NetworkInterface 是一个纯虚拟类,那么根据定义它没有指定任何要链接的目标代码。如果您的主程序不使用 network.dll 中的任何代码,则它不会费心与它链接,也不会在运行时加载它。
ZDan 说的。
您需要从将返回 NetworkInterface 实例的 DLL 中导出“工厂函数”。
__declspec(dllexport) NetworkInterface* CreateNetworkInterface()
{
MyClassDerivedFromNetworkInterface *pNI = new MyClassDerivedFromNetworkInterface();
return pNI;
}
然后在“主要”某处,只需说:
NetworkInterface *pNI = CreateNetworkInterface();
所有这些都假定您正在链接到编译该 DLL 时构建的 network.lib 存根库。