2014-09-23 78 views
0

我正在使用通信API(.NET)與USB轉CAN適配器進行接口。在過去,我使用C#,但現在我想嘗試F#。我從一個基本的控制檯應用程序開始,並且能夠配置驅動程序,因爲到目前爲止,所有API調用都將不可變常量用作輸入。現在我到了必須調用具有輸入和輸出的.NET函數的地步。試圖從F調用.NET API函數#

在C#中,我調用函數使用的代碼,如:

status = commlib.Comms.ReadData(int id, out msg, 100); 

我怎麼會叫這個從F#程序?

我一直在尋找,但還沒有找到答案。

+0

完全相同的方式:

int ReadData(int id, out string msg, int something); 

然後調用它像這樣。試試吧,看看 – 2014-09-23 22:16:03

+0

謝謝你的快速回答。我會試一試。它只是沒有發生,我只是試試這種方式大聲笑我會宣佈這些變量(id和味精)可變嗎? – 2014-09-23 22:21:22

+0

一般來說,對於這類問題,最好的想法是說出你被困住的部分。它處理'out',引用庫怪異的運行時行爲等。 – 2014-09-24 01:06:37

回答

3

假設(最好從殘缺碼猜你貼)簽名居然是:當你在C#中會

let mutable msg = "" 
let status = ReadData(10, &msg, 100) 
+3

你的答案的'ref msg'部分不會改變'msg'變量,而是創建一個新的參考單元,改變它然後丟棄它。所以你要麼需要可變變量,要麼預先聲明'&msg'或者引用單元格。請參閱:http://luketopia.net/2014/02/05/fsharp-and-output-parameters/ – 2014-09-23 22:33:40

+0

好的。我會閱讀鏈接並試一試。謝謝! – 2014-09-23 22:37:27

+0

哎呀,修好了,謝謝! – Asik 2014-09-23 23:12:46