專注C++技術(shù) 在這里寫下自己的學(xué)習(xí)心得 感悟 和大家討論 共同進(jìn)步(歡迎批評!!!)
由于是通過指針調(diào)用 DLL 函數(shù)并且沒有編譯時(shí)類型檢查,需確保函數(shù)的參數(shù)是正確的,以便不會超出在堆棧上分配的內(nèi)存和不會導(dǎo)致訪問沖突。幫助提供類型安全的一種方法是查看導(dǎo)出函數(shù)的函數(shù)原型,并創(chuàng)建函數(shù)指針的匹配 typedef。例如:
調(diào)用 GetProcAddress 時(shí)指定所需函數(shù)的方式取決于 DLL 的生成方式。
僅當(dāng)要鏈接到的 DLL 是用模塊定義 (.def) 文件生成的,并且序號在 DLL 的 .def 文件的 EXPORTS 部分中與函數(shù)一起列出時(shí),才能獲取導(dǎo)出序號。如果 DLL 具有許多導(dǎo)出函數(shù),則相對于使用函數(shù)名,使用導(dǎo)出序號調(diào)用 GetProcAddress 的速度稍快一些,因?yàn)閷?dǎo)出序號是 DLL 導(dǎo)出表的索引。使用導(dǎo)出序號,GetProcAddress 可直接定位函數(shù),而不是將指定名稱與 DLL 導(dǎo)出表中的函數(shù)名進(jìn)行比較。但是,僅當(dāng)有權(quán)控制 .def 文件中導(dǎo)出函數(shù)的序號分配時(shí),才應(yīng)使用導(dǎo)出序號調(diào)用 GetProcAddress。
Copyright @ @王一偉 Powered by: .Text and ASP.NET Theme by: .NET Monster