我知道,當您在COM接口中添加/更改/刪除方法時,應該更改接口/ coclass GUID,但是類型庫又如何。什麼時候應該更改類型庫的GUID?如果類型庫中的GUID發生更改,是否更改它?或者,只有當類型庫中沒有自己的GUID的內容發生更改時,才需要對其進行更改。何時更改類型庫上的GUID
3
A
回答
3
基本原理是COM接口和類型庫應該是不可變的(也就是說,它們不應該改變)。如果您在COM界面中更改了一個項目,那麼新版本需要成爲與以前版本完全分離的實體。唯一的方法是更改庫中每個接口的GUID和類型庫自身的GUID。這也是一個好主意(爲了您自己的理智)更改類型庫的名稱。
理想情況下,你不應該改變一個COM接口。相反,創建一個新的派生COM接口併發布到一個新的類型庫中。
0
我有類似的問題。
我有一個原來的控制與CLSID_A後來上實現接口IID_A在某些1.0類型庫GUID_A
,我決定到一個新的接口添加到原來的控制。然後它將實現IID_A和IID_B接口。我想我應該保持相同的CLSID,但不知道如何處理typelib本身。我主要是做VC++編程的東西,其中涉及QueryInterface,並且不關心版本控制和typelib。你想創建一個具有特定CLSID的對象,你只需要詢問CoCreated實例...然後查詢接口以獲得對新接口的潛在支持...
現在,當我進入像LabVIEW這樣的更加美好的環境或設計時像Microsoft .NET這樣的嵌入式開發環境,似乎打破了MFC的東西。
你在回答中提到要更改所有的GUID。是否將基於可用功能的應用程序調整爲一個完整範例,新的應用程序仍然可以使用它的基本功能與控制的舊版本?也許我沒有注意到後面的一段話:沒有必要讓一個應用程序適應舊的控制版本運行,它只需要一個特定的控制版本。這也是M $出現在ASSEMBLY中的原因。
相關問題
- 1. 如何更改我的數據庫上的數據類型
- 2. 更新時GUID是否更改?
- 3. 如何更改對象GUID
- 4. 在SharePoint中將列表類型更改爲Guid
- 5. fluentmigrator Guid MySQL類型
- 6. 在運行時更改類的類型
- 7. 如何在vb6中更改DCOM的guid?
- 8. 更新模型更新不及時更改的數據類型
- 9. 更改數據庫中的日期時間類型
- 10. 更改self.view的類類型
- 11. 將「選擇」類型更改爲值更改時的「日期」類型
- 12. 如何更改DataTable類型?
- 13. 什麼是GUID類型?
- 14. MVC3:Guid數據類型
- 15. 未知項目類型GUID
- 16. 使用GUID類型:PHP
- 17. 類型「GUID」沒有定義
- 18. 如何更改子類上的變量數據類型
- 19. 如何在讀取Ace.OleDB時更改數據類型如何在讀取Ace.OleDB時更改數據類型
- 20. Grails在現有數據庫上更改ID類型
- 21. 使用EntityFramework在運行時更改數據庫類型
- 22. Python:在MS-Access數據庫中寫入時更改類型
- 23. 在Google雲上更改機器類型
- 24. 更改上傳控件文件類型
- 25. 更改IAP類型
- 26. 更改類型幀
- 27. 更改DataStore類型
- 28. HASKELL - 更改類型
- 29. 如何在postgresql中更改數據庫的「字符類型」?
- 30. 如何更改SVN存儲庫中的類型?
不是全部故事! **您可以添加新的接口和類型**而不更新任何現有的GUID,包括類型庫GUID。你可以**添加新的接口到現有的類**。這意味着您可以在不破壞現有編譯代碼的情況下添加新功能。請參閱http://msdn.microsoft.com/en-us/library/7ydsx43e.aspx。所以,類型庫*可以改變! – Olly 2012-10-12 18:26:41