2017-02-20 102 views
-2

可執行文件如何精確地從DLL中定位函數?我知道DLL文件具有入口點,但是可執行文件如何用名稱定位這些入口點,因爲DLL中的所有內容都是1s和0s?可執行文件如何從DLL文件中查找函數?

+1

所有文件中的所有內容都是1s和0s。 –

+1

http://stackoverflow.com/questions/124549/what-exactly-are-dll-files-and-how-do-they-work – Anil

+0

DLL格式與EXE相同,所以[在這裏閱讀](https:// msdn.microsoft.com/en-us/library/windows/desktop/ms680547(v=vs.85).aspx) – mpiatek

回答

-1

您可以針對特定的.lib文件進行編譯,該.lib文件是從用於創建DLL的相同代碼派生而來的。如果您使用完全相同的設置完成此操作,則會保留入口點,並且調用程序將這些入口點構建到代碼中。這就是爲什麼用不同版本的VStudio編譯DLL可能會破壞一些東西:C運行時庫和其後的VStudio的其他細節不完全相同,因此DLL和EXE都有不同的入口點。但是如果你在同一代技術上編譯,那麼他們會自動排隊。

+0

嗯,我總是被告知它包含機器指令,如可執行文件。 –

+0

嗯,但你基本上有一個確切的原理圖,當你製作你的exe文件時,所有東西都來自.lib文件,所以它知道這些東西已經在哪裏了。這就是它不會讓你編譯使用DLL的原因,除非你在同一代編譯器上生成了正確的.lib文件。 –

+0

因此,如果我的DLL有函數「CreateWindow」它會包含創建窗口或只是函數名稱的說明嗎? –

相關問題