簡體   English   中英

使用Delphi 7訪問托管代碼(CLR)DLL

[英]access managed code ( CLR ) DLL with Delphi 7

delphi7如何訪問C#.net管理的dll?

我正在嘗試訪問一些用c#編譯的DLL,它們不是那些舊式DLL。 (我沒有這些DLL的來源)

我確實試圖在網上搜索,但他們很困惑。 我猜即使用D7訪問它也有一些限制。

謝謝。

@AngryHacker,對於你的建議是真的,.NET程序集需要用ComVisibleAttribute(啟用COM Interop選項注冊)標記,並使用[ComVisible(true)]將每個函數公開給COM。

如果您嘗試使用第三方程序集(您沒有編寫),則必須與供應商核實是否可以通過COM使用該程序集。

此外,程序集不需要強名稱可通過COM訪問。

如果您不想使用COM方式,請查看CrossTalk for Delphi: http//www.atozed.com/CrossTalk/Docs/index.EN.aspx

Delphi7以與任何其他基於COM的語言(例如VB6)相同的方式訪問托管DLL。

基本演練是這樣的:

  1. 確保您的.NET具有強名稱。
  2. 通過regasm運行它
  3. 將其放入GAC

現在Delphi7應該能夠引用由regasm生成的TLB文件,就像任何其他基於COM的DLL一樣。

很久以前你可以嘗試使用Brian Long所描述的“反向P /調用”技巧

這個技巧不需要ComVisible(所以你應該能夠在不改變.NET程序集的來源的情況下使用它)。

--jeroen

這根本不難。 如果你不想,你不必“詛咒”它。 你根本不必注冊任何COM-ish。

通過使用C#或其他托管語言創建包裝器,您將獲得最佳服務。 哦,確保你的課程是可見的(真實的)。 這個Stack Overflow線程很好地總結了它,並且它通過一組用於不同場景的示例來實現。 使用/不使用JCL在Delphi中托管CLR - 示例

如果您無法更改原始DLL的源代碼,則可以使用C#或Prism編寫代理,以公開可在項目中使用的com接口。 這種方法的優點是您可以定制每個調用,只使用您可以輕松處理的特定類型。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM