2012-02-02 99 views
0

我有一個VC++應用程序編譯對第三方DLL(當然使用他們的LIB文件)。如何在不使用DLL的情況下運行沒有依賴的DLL?

問題是,並非每個場景都涉及該DLL的代碼,但Windows拒絕啓動應用程序,如果缺少特定的DLL。

我想知道,我該如何解決這個約束。如果真的需要上述DLL,我希望應用程序崩潰。

請忽略這個問題,當應用程序在成功啓動後崩潰時它是否是一種很好的品味 - 我會照顧它的。

如何推遲DLL分辨率,直到實際需要加載該DLL爲止?

謝謝。

+0

可能的重複http://stackoverflow.com/q/1388388/395718 – Dialecticus 2012-02-02 11:00:26

+0

你說得對。錯過了那一個。 – mark 2012-02-02 11:03:24

回答

3

/DELAYLOAD linker option

在Visual C++接頭現在支持的DLL的延遲加載。這使您無需使用Windows SDK函數LoadLibrary和GetProcAddress來實現DLL延遲加載。

在Visual C++ 6.0之前,運行時加載DLL的唯一方法是使用LoadLibrary和GetProcAddress;當使用它的可執行文件或DLL被加載時,操作系統會加載DLL。

從Visual C++ 6.0開始,當與DLL靜態鏈接時,鏈接器提供延遲加載DLL的選項,直到程序調用該DLL中的函數。

應用程序可以使用/ DELAYLOAD(延遲加載導入)鏈接器選項與輔助函數(Visual C++提供的默認實現)來延遲加載DLL。輔助函數將在運行時通過爲您調用LoadLibrary和GetProcAddress來加載DLL。

相關問題