在Engee中调用C代码
在本演示中,我们将探讨在Engee脚本中使用C代码的可能性。 毕竟,虽然大部分代码都可以用Engee编写,但有许多高质量和成熟的数值计算库已经用C编写。
Engee坚持"无模板"的理念:您可以直接从脚本调用函数,而无需任何"链接"代码,代码生成或编译。
这是通过调用宏*@ccall*来实现的。
作为一个例子,让我们从C标准库中调用clock函数。 Clock不接受参数,在我们的例子中返回Int32。
In [ ]:
t = @ccall clock()::Int32
print("Тип t: " * string(typeof(t)) * ", при t равном: " * string(t))
现在让我们考虑调用用C语言编写的函数的选项。 为此,取一个用C编写的函数的文件,并从中组装可执行文件*.so*。
为此,请转到Engee命令行,使用分号打开shell行并执行以下命令。
<代码>
cd/user/start/examples/integrated_languages/calling_c_code
<代码>
gcc-c-fPIC say_y.c-o say_y.o
<代码>
gcc say_y.o-shared-o say_y.so
下面是此操作的屏幕截图。
C语言中的函数本身非常简单:它输出输入参数。 下面的屏幕截图显示了功能代码。
要调用函数,我们需要指定编译的*.so*文件的路径,并调用函数本身。
In [ ]:
@ccall "$(@__DIR__)/say_y.so".say_y(10::Cint)::Cvoid
结论
在这个演示中,我们分析了Engee在使用C方面的能力,既可以通过调用脚本中的函数,也可以通过连接用户函数来执行分配给我们的任务。