我有一個vb6程序需要使用MSOLAP80.dll來正確顯示其數據透視表。但是,因爲MSOLAP90.dll有一些兼容性問題,所以無法使用MSOLAP90.dll,並且仍然顯示數據透視表。將有兩個不同版本的DLL導致問題?
我已註冊MSOLAP90.dll,然後再次註冊MSOLAP80.dll,一切似乎都很好。然而,我不知道這兩者是否實際註冊,或者MSOLAP80.dll是唯一註冊的,因爲我沒有參考MSOLAP90.dll中的新增功能。有可能兩者都是註冊的,並且程序只是使用MSOLAP80.dll,如果有程序需要MSOLAP90.dll,那麼它會知道使用那個?
我想我只是混淆瞭如何註冊DLL的工作,如果有可能有兩個這些註冊在同一時間。有人可以幫忙解釋嗎?
這取決於DLL和他們實現的內容。實質上,對象將使用註冊的最後一個創建。如果您只使用8.0版本的對象,那麼它們只會來自DLL的第8版。如果使用的是9.0版本的對象,它可能會嘗試從90 DLL加載它,或只是徹底失敗。 – Deanna 2012-08-06 14:56:21
我的程序只使用了8點版本的對象,但我如果有兩個會影響其他程序以及好奇? – Sam 2012-08-06 14:59:15
註冊DLL而不同時重新編譯程序表明,這些DLL使用相同的GUID。這是一個問題,你很可能會破壞任何需要msolap90.dll正常工作的程序。這種古代代碼最好在虛擬機上運行。 – 2012-08-06 15:45:47