2013-07-03 109 views
-2

there: 我寫了兩個dll項目,一個名字是Core.dll,另一個是Network.dll。 而在主(不是核心和非網絡)項目中,我使用類指針NetworkInterface *。 NetworkInterface是純虛擬類。運行主項目後,我發現Core.dll已加載,但Network.dll未加載(輸出窗口顯示)。主要項目依賴於核心和網絡。爲什麼我的DLL沒有加載?

我沒有使用函數LoadLibrary()。

謝謝。

最好的問候。

+1

我們需要更多信息。這是Win32上的C++項目嗎?你如何建立你的項目之間的依賴關係?如果不是在Core或Network中定義了'Main',那麼它在哪裏定義? – Dai

+0

當然,有更合適的標籤不僅僅是「dll」;也許還有一些相關的代碼或鏈接細節? – Paul

+0

你確定你從Network.dll調用了一些函數嗎?也許你頭裏有一些內聯函數? –

回答

4

如果NetworkInterface的是一個純虛類,那麼顧名思義它未指定任何目標代碼鏈接。如果你的主程序沒有在network.dll中使用任何代碼,那麼它就不會費心去鏈接它,並且不會在運行時加載它。

2

ZDan說了些什麼。

您需要從DLL中導出一個「工廠函數」,它將返回一個NetworkInterface的實例。

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

然後在「主」的地方,只是說:

NetworkInterface *pNI = CreateNetworkInterface(); 

所有這一切都假定您鏈接到您在編譯DLL,它被建造的network.lib存根庫。

相關問題