4
我正在嘗試將一個C#dll調用移植到F#。如何通過引用的參數調用F#中的外部函數?
C#的調用是:
[DllImport("swedll32.dll", CharSet = CharSet.Ansi, EntryPoint = "swe_revjul")]
private extern static double ext_swe_revjul(double tjd, int gregflag, ref int year, ref int month, ref int day, ref double hour);
我試過在半打方式來寫這在F#中,但都無濟於事(至少!)。 其中:
[<DllImport("swedll32.dll", CharSet = CharSet.Ansi, EntryPoint = "swe_revjul")>]
extern double ext_swe_revjul (double tjd) (gregflag:int) (year: int byref) (month: int byref) (day: int byref) (hour: double byref);
或者:
let ext_swe_revjul double (tjd:double) (gregflag:int) (year: int byref) (month: int byref) (day: int byref) (hour: double byref)
我試圖用一個限定詞或寫入按地址「一:按地址」 - 能有人幫幫我嗎?非常感謝您提前!
暫時失意的科學家,誰只想得到他的公式:-)
這會起作用,但我認爲'int&'和'double&'會更接近C#代碼的語義。 – ildjarn
好點。儘管我會推薦匹配C sig,無論如何。 – Daniel
非常感謝你,我通過http://pblasucci.wordpress.com/2012/07/23/managing-pointers-or-fs-platform-invoke-gotcha/發現了兩者之間的區別。 。一個聲明使用非託管指針,另一個聲明使用託管指針。 – Wolfgang