为什么我的DLL没有加载?

时间:2013-07-03 04:20:29

标签: c++ winapi dll

那里:   我写了两个dll项目,一个是Core.dll,另一个是Network.dll。 在主(不是Core而不是Network)项目中,我使用了一个类指针NetworkInterface *。 NetworkInterface是纯虚拟类。运行主项目后,我发现Core.dll已加载但未加载Network.dll(输出窗口显示)。主要项目依赖于核心和网络。

我没有使用函数LoadLibrary()。

感谢。

最诚挚的问候。

2 个答案:

答案 0 :(得分:4)

如果NetworkInterface是纯虚拟类,那么根据定义,它没有指定任何要链接的对象代码。如果您的主程序没有使用network.dll中的任何代码,那么它就不会费心与它链接,也不会在运行时加载它。

答案 1 :(得分:2)

ZDan说的话。

您需要导出"工厂功能"从将返回NetworkInterface实例的DLL。

__declspec(dllexport) NetworkInterface* CreateNetworkInterface()
{
     MyClassDerivedFromNetworkInterface *pNI = new MyClassDerivedFromNetworkInterface();
     return pNI;
}

然后在" main"在某个地方,只需说:

NetworkInterface *pNI = CreateNetworkInterface();

所有这些都假定您链接到编译该DLL时构建的network.lib存根库。