程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> 在本機代碼中通過 COM 使用 F#

在本機代碼中通過 COM 使用 F#

編輯:C++入門知識

在本機代碼中通過COM 使用 F#

雖然大多數情況下,我們可能希望從 F# 代碼調用本機代碼,但是,在某些情況下,也可能想從本機代碼中調用 F# 庫函數。例如,假設我們有一個大型的程序是用 C++ 寫的,有可能希望用戶界面保持用 C++,而把一些邏輯,比如執行復雜數學計算的部分遷移到 F#,以方便維護。在這種情況下,我們就要從本機代碼中調用 F# 了。簡單的方法是借用.NET 提供的工具,為我們的 F# 程序集創建 COM 包裝;然後,使用COM 運行時從 C++ 中調用 F# 函數。

要通過 COM 公開函數,需要用特殊方法進行開發。首先,必須定義接口,為函數指定契約,接口的成員必須使用命名參數(參見本章前面的“C# 中調用 F# 庫”一節),接口本身使用 System.Runtime.InteropServices.Guid特性來標記;然後,必須提供一個類來實現這個接口,這要用System.Runtime.InteropServices.Guid 和System.Runtime.InteropServices.ClassInterface 特性進行標記,還應該總是把 ClassInterfaceType.None枚舉成員傳遞給 ClassInterface 特性的構造函數,說明沒有接口應該自動生成。

我們來看一下示例是如何做的。假設我們想公開兩個函數Add 和 Sub 給非托管的客戶端,需要在命名空間Strangelights 下創建接口IMath,然後,創建類 Math 實現這個接口,還需要保證類和接口用適當的特性進行標記。最後的代碼可能像這樣:

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved