一個控制元件參考olelib.tlb,另一個控制元件參考oleguids3.tlb。
可怕的是,這兩個tlb都兢兢業業、勤勤懇懇地實作了一堆同名的介面:
IoleClientSite
IoleControlSite
IoleInPlaceActiveObject
IoleInPlaceFrame
IoleInPlaceSite
IoleInPlaceUIWindow
IoleObject
IoleWindow
IUnknown
然而,兩個tlb定義介面的引數卻完全不同!
試圖打包生成OCX時,重名的介面,不同控制元件的呼叫,便亂成了一鍋粥!
舉個例子:
A控制元件原本參考oleguids3.tlb的IoleObject、IoleInPlaceActiveObject、IoleInPlaceSite,一切正常;
B控制元件原本參考olelib.tlb的IoleObject、IoleInPlaceActiveObject、IoleInPlaceSite,也一切正常;
然而打包到一個工程之后,似乎有且只有一個IoleObject、IoleInPlaceActiveObject、IoleInPlaceSite是優先使用的,于是就變成了:
A控制元件錯誤地參考了olelib.tlb的IoleObject、IoleInPlaceActiveObject、IoleInPlaceSite,一切完全不正常了!
有沒辦法指定A控制元件參考且只能參考oleguids3.tlb的重名介面?比方說,VB有沒有類似這樣的語法:
olelib :: IoleObject、olelib :: IoleInPlaceActiveObject、olelib :: IoleInPlaceSite
oleguids3 :: IoleObject、oleguids3 :: IoleInPlaceActiveObject、oleguids3 :: IoleInPlaceSite
即,用“命名空間”來區分介面呢?
求救大俠們,有沒有辦法解決這種重名問題?
uj5u.com熱心網友回復:
控制元件A控制元件B分別編譯,然后新建控制元件C分別參考控制元件A和B進行展現。然后應用只要參考控制元件C就完成了……
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/188188.html
上一篇:一道求分頁存盤管理系統的題
