2010-07-21 68 views
1

大家好,我先給你介紹一下背景: 我正在開發一個與vs2005一起搭配windows sdk 7.0並且最重要的修補程序的winxp sp3項目,它的目標是從win xp(sp 0) - > windows 7.爲什麼我得到「程序入口點CreateVssBackupComponentsInternal無法位於動態鏈接庫VSSAPI.DLL中。」

該項目的一部分是查詢快照並播放一下。 在我的開發環境中一切正常,在windows 7上一切正常(有點好,但這不是重點)。

清潔XP機器(SP3 & 2)我得到: 「程序輸入點CreateVssBackupComponentsInternal不能設在動態鏈接庫VSSAPI.DLL」當我啓動應用程序 - 即使在我到達的部分與VSSAPI相關的代碼...

1)在調用之前,它如何提出消息? 2)有沒有人有一個想法,爲什麼它不工作?

感謝

回答

2

1)由於應用程序啓動時,還不時的第一個需要它的DLL加載。如果您想稍後加載,或甚至有條件地加載,請查找延遲加載或LoadLibrary系統調用。

2)我不知道,但有人問前同樣的問題:Why does my Volume Shadow Copy Service requester fail: cannot find CreateVssBackupComponentsInternal

+0

謝謝您的回答,我已經看到了那個帖子,我想因爲我的函數調用不叫我的問題是不同。 我希望我的下一個問題不會太多,要動態地調用CreateBackupVssComponent很容易,但其餘的函數(它們是屬於vss系列成員的類的成員函數)會比較困難。 是否對CreateBackupVssComponent函數的調用使應用程序驗證它是否存在於DLL中?換句話說,如果我不會調用函數,它會在DLL中搜索它嗎? – ManicQin 2010-07-22 10:30:29

+0

如果您的應用程序中存在對該函數的調用,則該DLL將在啓動時加載,並且該函數需要位於其中。如果不使用LoadLibrary和GetProcAddress,則無法有條件地執行此操作。 – torhu 2010-07-22 22:04:29

+0

嗯...謝謝。 我會嘗試動態加載它們。 我發現我的項目中的一些庫會拋出「WINVER未定義的消息,默認爲0x0502(Windows Server 2003)」,可能是這個問題。 謝謝! – ManicQin 2010-07-23 14:39:17

相關問題