簡體   English   中英

不使用依賴DLL時如何運行該DLL?

[英]How to run without a dependent DLL when that DLL is not used?

我有一個針對第三方DLL編譯的VC ++應用程序(當然使用其LIB文件)。

事實是,並非每種情況都涉及該DLL的代碼,但是如果缺少特定的DLL,Windows將拒絕啟動該應用程序。

我想知道如何解決此約束。 我希望僅當確實需要上述DLL時,應用程序才會崩潰。

請忽略這個問題,即在應用程序成功啟動后崩潰時,它是否是一種好味道-我會解決的。

如何推遲DLL的解析,直到該DLL實際上需要加載?

謝謝。

請參閱/DELAYLOAD鏈接器選項

現在,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(延遲加載導入)鏈接器選項延遲加載DLL(Visual C ++提供的默認實現)。 輔助函數將在運行時通過為您調用LoadLibrary和GetProcAddress來加載DLL。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM