2011-07-26 588 views
0

我正在嘗試使用tlibimp.exe(版本11.0)導入第三方.NET類型庫(COM服務器DLL)。這基本上可以正常工作,但是當我在不同的計算機上運行它時,結果會有所不同,其中一臺運行Windows XP,另一臺運行Windows 7.更糟的是,在Win7機器上生成的代碼無法編譯。tlibimp.exe輸出在不同的操作系統上有所不同

兩臺機器有:

  • 的Borland C++(RAD Studio企業)2007
  • tlibimp.exe版本安裝11.0
  • 同.NET framework版本(據我所知,2007年的Borland 使用.NET V2)
  • bcc32.exe版本5.93

編譯器在OCX.h失敗:

Parameter mismatch in write access specifier of property Font 

的代碼XP的機器(其編譯OK)上的相關的行是:

__property Graphics::TFont * Font={ read=GetTFontProp, write=_SetTFontProp, stored=false, index=-512 }; 

Win7的機器(其失敗)在同一行中是:

__property IFontDisp* Font={ read=get_Font, write=set_Font, stored=false }; 

現在我不確定這種差異是從哪裏來的。有任何想法嗎?

歡呼 亨德里克

+0

.net COM服務器如何導出VCL'Graphics :: TFont'? –

+0

我不知道,但它似乎工作。這可能是一些Borland組件的包裝魔法? – Hendrik

+0

我應該補充說,這個類的兩個版本之間存在巨大差異,而不僅僅是一行。首先,WinXP版本繼承了TOleControl,而Ole7的Win7 :: TOleServer – Hendrik

回答

0

這可能會或可能不會幫助,但我也有類似的問題,試圖導入兩個式庫到Delphi中,從C調組件。

一個從TOLeServer繼承的類型庫(A),另一個來自TOleControl的(B),我看不出爲什麼,因爲生成類型庫的兩個程序集幾乎都是相同的。

問題原來是B已經註冊regasm和A沒有。註冊A並重新生成類型庫解決了問題。

相關問題