存在哪些接口將Erlang與C++聯繫在一起?將Erlang與C++集成
回答
Native implemented functions:在最新的Erlang/OTP版本,可以讓你實現你的任何功能C.
Port drivers:您可以將所需的C代碼到二郎山VM,和訪問使用port_command。
C節點:通過ei庫,您可以模擬虛擬機並使用Erlang分發格式與您的Erlang虛擬機交談。
對於Zed的優秀答案,我會加open_port()
。它可以讓你啓動一個外部程序並使用標準的Erlang與Erlang進行通信。你可以通過給出{line,L}選項來像Unix管道一樣使用它,或者也有長度前綴的{packet,N}選項,我發現它更安全和更高效。
這比NIF和端口驅動程序的優點是你的Erlang代碼完全與C代碼無關。 C程序可以粉碎它自己的堆棧,雙倍空閒的內存塊,進入無限循環等等。這些都不會阻止你的Erlang代碼。最糟糕的是,如果事情變成梨形,你關閉Erlang端口並重新打開它。
任何有興趣用Erlang/C++集成方面,也可能想看看這篇文章:Rewriting Playdar: C++ to Erlang, massive savings:
我聽說過很多趣事和權利要求書有多少行代碼,當你寫保存在Erlang中而不是[C++/other language]。我很高興地報告,我現在有第一手的經驗和一些數據可以分享。
我最初在C++(使用Boost和Asio庫)中編寫Playdar,從今年2月份開始。我很幸運能夠與一些有經驗的開發人員合作,他們幫助我瞭解C++。直到幾個月前,我們有三個人經常對它進行攻擊,儘管對C++來說是相對陌生的事情,但我會說,我們最終設計了一個設計良好且健壯的代碼庫,所有事情都考慮在內。
他們開始編寫了8,035行代碼,幾周後他們寫了10,067行代碼中,他們扔掉了80%的代碼,在這個過程中沒有添加新的功能,這是一個節約?必須是開源的東西,因爲企業無法證明這一點。 (寫在Erlang開始將是另一回事) – 2010-02-28 16:21:23
這是減少未來技術債務的主要節約。更少的代碼行數=稍後更易於維護,調試和添加新功能。 – DSimon 2015-07-14 20:29:24
- 1. 將MATLAB與C集成#
- 2. 將Prolog與C集成#
- 3. 將TideSDK與C * .dll集成
- 4. 集成C#與Matlab
- 5. 將Java與C#集成在一起.net
- 6. 將pygame與C模塊集成
- 7. 將C應用程序與WPF集成
- 8. 將C#集成到C++中
- 9. 將Spring MVC與Spring集成集成
- 10. 與Outlook 2010集成C#Winform?
- 11. 集成Prolog CLP(FD)與C#
- 12. Google Checkout與C#.net集成
- 13. 與C#的RDF集成
- 14. 集成與C#語言
- 15. 與Chartboost集成objective-c
- 16. C#與MySql的集成
- 17. PayPal集成。 C#POST與WSDL
- 18. 集成織物(Crashlytics)與C++
- 19. Excel與C#.NET集成
- 20. C#與Outlook的集成
- 21. 集成CouchDB與Erlang連接到服務器
- 22. rabbitmq - erlang客戶端與ejabberd模塊集成
- 23. 與C++集成的C#.NET開發集成
- 24. 將informatica與Kafka集成
- 25. 將Monkeyrunner與UI Automator集成
- 26. 將Sencha Touch與Rails集成
- 27. 將Kendo Grid與Coldfusion集成
- 28. 將CreditSafe與Sage CRM集成
- 29. 將ExtJS與JAX-RS集成
- 30. 將tumblr與ios集成
NFI仍然是實驗性的...但我希望並熱切地等待這些穩定的接口! – jldupont 2009-11-28 11:39:35
確實,它們是實驗性的,但是有一個「後備」Erlang函數實現非常好,它甚至值得爲每個即將發佈的版本改變你的C代碼:) – Zed 2009-11-28 15:44:46
是的,我同意! – jldupont 2009-11-28 16:58:32