国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

C#調用haskell遭遇Attempted to read or write protected memory

2019-11-17 03:26:07
字體:
來源:轉載
供稿:網友

1. Haskell的代碼如下:

haskell調用pandoc的代碼

上面的代碼中readMarkdown與writeHtmlString是pandoc中的函數,newString的作用是將String轉換為IO CString。

2. C語言的代碼如下:

調用pandoc的C語言代碼

上面的代碼是dll的調用入口。

3. ghc編譯出來的頭文件如下:

haskell ghc編譯出來的頭文件

4. C#調用代碼如下:

復制代碼
class Native{    [DllImport("libpandoc", CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Unicode)]    public static extern IntPtr markdownToHtml(byte[] markdown);}public class PRocessor {    public string Process(string text)    {        var intPtr = Native.markdownToHtml(System.Text.Encoding.UTF8.GetBytes(text));        var html =  Marshal.PtrToStringAnsi(intPtr);        return html;    } }
復制代碼

5. 運行C#代碼之后,出現錯誤:

An unhandled exception of type 'System.accessViolationException' occurred in Unknown Module.

Additional information: Attempted to read or write protected memory. This is often an indication that other memory is corrupt.

  對應的中文錯誤信息:

嘗試讀取或寫入受保護的內存。這通常指示其他內存已損壞。

6. 而在ghci中執行直接執行haskell代碼能得到正確的結果:

被這個“Attempted to read or write protected memory. ”問題困擾了很長時間,一直未找到解決方法。

【更新】

后來找到了解決方法,詳見:困擾多日的C#調用Haskell問題竟然是Windows的一個坑


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 成安县| 平乡县| 长武县| 邵武市| 汽车| 江安县| 五指山市| 海伦市| 珲春市| 安阳县| 屏东县| 新民市| 濮阳市| 台前县| 奉化市| 贵溪市| 铜梁县| 东兰县| 合山市| 仪征市| 朝阳区| 即墨市| 天气| 苍梧县| 遂昌县| 文昌市| 平阳县| 潮安县| 闻喜县| 德兴市| 越西县| 满洲里市| 祁阳县| 宣汉县| 弋阳县| 法库县| 古田县| 庆阳市| 永定县| 广元市| 崇信县|