我正在尝试弄清Crystal中的c绑定(bind)是如何工作的。首先,我想知道如何将简单的hello world c函数包含到crystal中。从基础开始总是好的,对吧?这是我要包含的功能:

#include <stdio.h>

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

最佳答案

这也花了我一些时间。首先,您必须将C文件编译为一个对象。在gcc中,您将运行gcc -c hello.c -o hello.o

然后,在 Crystal 文件中,您需要链接到C对象。这是一个例子:

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

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

Say.hello("your name")

现在,您只需要编译您的Crystal应用程序即可使用。crystal build hello.cr

关于crystal-lang - Crystal C绑定(bind),简单的hello world示例。,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42773684/

10-15 22:03