Elixir NIF- Hallo Welt Beispiel auf x64 Mac OSX

8

Hallo, ich versuche, das Beispiel Hallo Welt für Erlang NIF ( Native implementierte Funktion ) hier gezeigt zu bekommen Ссылка von Elixir auf OSX 64bit zu arbeiten.

Zuerst erstelle ich den C-Code:

%Vor%

Dann kompiliere ich es erfolgreich mit gcc für 64 Bit Architektur, wie hier vorgeschlagen Erlang NIF-Test - OS X Lion

%Vor%

was die notwendige Datei niftest.so erzeugt, die ich von Erlang / Elixir aus einbinden kann. Mein Elixier (niftest.ex) sieht so aus (inspiriert von einem komplexeren Beispiel berichtete hier ):

%Vor%

Jetzt mit niftest.so und niftest.ex im selben Verzeichnis starte ich Elixier mit iex und tippe Niftest.hello ein und alles was ich zurückbekomme ist: "NIF library not loaded"

Vermisse ich einen wichtigen Schritt? - Bitte helfen!

    
GavinBrelstaff 27.04.2015, 09:29
quelle

1 Antwort

11

Der Ladevorgang der Bibliothek schlägt im Hintergrund fehl. Sie können bestätigen, dass es erfolgreich ist:

%Vor%

Dies führt zu einem Fehler:

%Vor%

Das passiert, weil eine NIF-Lib nur von ihrem "Owning" -Modul aus aufgerufen werden kann. Der Name dieses Moduls ist das erste Argument des Makros ERL_NIF_INIT . Sie können dies beheben, indem Sie diesen Aufruf ändern und neu kompilieren:

%Vor%

Es gibt auch einen Tippfehler im Lasthaken. Es sollte sein:

%Vor%     
Paweł Obrok 27.04.2015, 10:16
quelle