C++ 为什么我的DLL没有加载?

C++ 为什么我的DLL没有加载?,c++,winapi,dll,C++,Winapi,Dll,在那里: 我写了两个dll项目,一个是Core.dll,另一个是Network.dll。 在main(不是核心,也不是网络)项目中,我使用了类指针NetworkInterface*。其中NetworkInterface是纯虚拟类。运行主项目后,我发现Core.dll已加载,但Network.dll未加载(输出窗口显示)。主要项目依赖于核心和网络 我没有使用函数LoadLibrary() 谢谢 致以最良好的祝愿 Chen如果NetworkInterface是一个纯虚拟类,那么根据定义,它没有指定任

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

我没有使用函数LoadLibrary()

谢谢

致以最良好的祝愿


Chen

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

ZDan所说的

您需要从DLL中导出一个“工厂函数”,该函数将返回NetworkInterface的实例

__declspec(dllexport) NetworkInterface* CreateNetworkInterface()
{
     MyClassDerivedFromNetworkInterface *pNI = new MyClassDerivedFromNetworkInterface();
     return pNI;
}
然后在“main”的某个地方,只需说:

NetworkInterface *pNI = CreateNetworkInterface();

所有这些都假定您正在链接到编译DLL时生成的network.lib存根库。

我们需要更多信息。这是Win32上的C++项目吗?您如何在项目之间建立依赖关系?如果不在核心或网络中,
Main
在哪里定义?肯定有比“dll”更合适的标签;可能还有一些相关的代码或链接详细信息?您确定从Network.dll调用了一些函数吗?也许你的头中有一些内联函数?dependency walker为你的主应用程序显示了什么?您如何判断是否加载了dll?