簡體   English   中英

如何將 ocaml 代碼編譯為本地代碼以供 C++ 使用

[英]How to compile ocaml code to native to be used by C++

如何將此 facebook 解析器庫編譯為本機代碼,以便我的 C++ 程序https://github.com/facebook/flow/srctree/

我試過使用ocamloptdune build但似乎有錯誤。

File "src/services/saved_state/dune", line 7, characters 4-29:
7 |     saved_state_dummy_fetcher
        ^^^^^^^^^^^^^^^^^^^^^^^^^
Error: Module Saved_state_dummy_fetcher is excluded but it doesn't exist.

謝謝

OCaml is a different language from C or C++ and it uses different calling conventions and binary interface (ABI) than C or C++. 關於 OCaml,這里沒有什么特別之處,即使是使用不同的 C++ 編譯器編譯的代碼,通常也不兼容,無法導入。

所以,如果你想從用語言 B 編寫的程序調用用語言 A 編寫的庫 function,你必須使用bindings 如果沒有綁定,那么您可以編寫自己的,盡管這不是一個簡單的項目,因為您必須決定如何將 C 數據結構轉換為 OCaml 數據結構,反之亦然。 如果您或其他人決定走這條路線,這里有一些提示。 官方文檔描述了低級接口。 CTypes庫提供了更高級別且不易出錯的接口(它還可以生成 C 代碼,您可以稍后將其編譯為 a.so 文件)。

當然,在編寫存根之前,您還應該學習如何編譯流程項目,因為您顯示的錯誤與將 OCaml 代碼導入 C 或 C++ 項目無關。 您應該按照流程主頁提供的說明進行操作。

暫無
暫無

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

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