2017-03-13 17 views
5

私はクリスタルがどのように働いているのか把握しようとしています。初心者の方には、私がどのように単純な世界のc関数を結晶に組み込むのかと思います。基本的なことから始めるのは良いことですか?ここに含める機能は次のとおりです。クリスタルCバインディング、単純な世界の例。

#include <stdio.h> 

void hello(const char * name){ 
    printf("Hello %s!\n", name); 
} 
+2

長期的には、動的リンクライブラリを実装します。 'libawesome.so'(これはC側から複雑です)、普通の例のように使うことができます:' @ [Link( "awesome")] '。 –

+0

@OlehPrypinコメントありがとうございました。私は実際にそれを調べていました。とても有難い。 – Jake

+0

@Jake最近私はあなたがこれを達成する方法を示す小さなデモを作成しました:https://github.com/ethagnawl/crystal-c-interop-demoうまくいけば、それは有益です! – pdoherty926

答えて

7

これも私には分かりません。まず、Cファイルをオブジェクトにコンパイルする必要があります。 gccではgcc -c hello.c -o hello.oを実行します。

次に、クリスタルファイルで、Cオブジェクトにリンクする必要があります。ここでは例です:

#hello.cr 
@[Link(ldflags: "#{__DIR__}/hello.o")] 

lib Say 
    fun hello(name : LibC::Char*) : Void 
end 

Say.hello("your name") 

は今、あなたは単にあなたの結晶アプリをコンパイルする必要があり、それが動作します。 crystal build hello.cr

+1

**ありがとうございます** @isaacsloan、これは多くのことに役立ちます。私はこれを私の将来のプロジェクトの一部に実装することに興奮しています。 – Jake

関連する問題