2010-01-12 29 views
4

2010年以前的Delphi版本在Delphi環境中有一個選項可以設置:「所有v-table接口」。這會在導入類型庫時改變調用約定。在2010年,這個選項已經消失。如何使用safecall調用約定導入類型庫?我希望2010年的控制能力比以前的版本更精細,但無論如何 - 現在我該怎麼做?如何在Delphi 2010中將TypeLib導入爲safecall和stdcall

謝謝。

+0

你可能已經發現,在新的TLB進口商的錯誤。 – 2010-01-15 02:13:28

回答

3

我還沒有嘗試過在Delphi 2010 IDE中使用「All v-table interfaces」選項。它在D2009中絕對被打破了。

您可以使用命令行tlibimp工具創建_tlb.pas文件需要:

tlibimp -P -Pt <tlb file> 
+0

我注意到tlibimp的幫助信息錯誤地指出要執行此操作的參數是-Pt-。它應該是-Pt或-Pt +。 – 2010-02-24 05:37:19

+0

幫助信息沒有告訴你的是它顯示了每個選項的默認設置。 -Pt-在幫助中說「將所有HRESULT映射到安全調用」默認是關閉的 - 我也被這一個抓住了:-( – 2010-02-25 04:38:25

0

如果您查看生成的生成的.ridl文件,您將看到這些方法已定義_stdcall。

現在您可以使用.ridl文件進行更精細的控制。

+0

這些類型庫來自* other *應用程序。我沒有他們的.ridl文件。我*進口*圖書館。感謝你的企圖。 – Steven 2010-01-13 00:48:28