2013-02-24 27 views
2

我知道如何寫一些100行C,但我不知道如何閱讀/組織更大的來源像Rebol。某處是一個帶有hostkit和dll的教程,但看起來R3現在是靜態鏈接的。所以我不知道在哪裏看。對於rebol3:想要開始使用Linux上的本機擴展。我如何寫一個你好世界?

我該如何編寫一個獲取值並返回另一個值的本機?在哪裏把它放在源代碼中?要服從什麼,就像告訴GC我在C中創建了什麼東西?

另外,如何將R3嵌入到其他程序中,從Python或Node調用它?我要求Python/Node部分遲來。但是我的學習主體應該以類似的方式訪問R3。意味着dll。有沒有一些典型的掛鉤啓動/關閉等在這樣的ffi?

[編輯:忘記提及:它是爲Rebol 3.]

+1

也許藝術的Linux編程可以幫助你開始?它討論通過各種接口將程序鏈接在一起。 http://www.faqs.org/docs/artu/ch01s06.html – deau 2013-02-24 15:11:02

+0

謝謝。忘了提及我有一個特定的界面,即rebol3。但好讀:) – dt2 2013-02-24 15:44:58

+0

「我不知道在哪裏看。」 - 使用源,盧克 – Ladislav 2013-08-06 18:46:44

回答

1

這是兩個問題。 :-)


關於第一個(約增加了原生)......它可能是最好的,因爲在維基開發者文檔闡述。從用戶的角度來看,標籤中的問題通常應該更多地關注語言。有關源代碼本身的答案通常會很長,實際上只有少數人能夠回答它,或者關心答案(StackOverflow稱之爲「本地化」)。如果有的話,它會在這個問題上出現更多的問題。

因此,告訴開發人員將他們的行爲一起寫下來,並將其寫入中央組織的地方,這可能是最好的主意! :-P但我其實自己也嘗試過。我添加了一個set-env native來設置解釋器中的環境變量,你可以看看它在GitHub中做了一些差異。

add SET-ENV, tweaks to host api for environment string handling

需要記住的重要事情是,當你觸摸某些文件,您必須運行做準備自動做了很多掃描和代碼生成的。添加本機就是你必須這樣做的事情之一,每次你改變到一個基本的界面。


關於你的第二個問題,這更多的是解釋嵌入,第一個地方看的是一個面向用戶的問題只是在簡單的REPL是如何實現的。主版本庫中有兩個版本,一個用於Posix,一個用於Windows。

https://github.com/rebol/r3/blob/master/src/os/host-main.c

所以串進去和串出來。但也有互動的更復雜的形式,你可以從REB-host.h,其中包括來自src/include

#include "reb-config.h" 

#include "reb-c.h" 
#include "reb-ext.h"  // includes reb-defs.h 
#include "reb-args.h" 
#include "reb-device.h" 
#include "reb-file.h" 
#include "reb-event.h" 
#include "reb-evtypes.h" 
#include "reb-net.h" 
#include "reb-filereq.h" 

#include "reb-gob.h" 
#include "reb-lib.h" 

這些文件,所以,你可以通過看這些文件的API,因爲它存在得到他們在12月12日開放採購的那一刻。事情會發展,並希望更好地記錄。但現在這似乎是可用的。您可以將主機套件作爲共享/ DLL或靜態庫鏈接,這取決於您的構建設置以及您使用的編譯器。

+0

處理設置,使一個DLL是問題3 :) 但我現在忙於#1,使我自己的功能。謝謝 :) – dt2 2013-02-24 21:06:32