sja*_*rni 1 c c++ language-binding language-implementation ffi
假设我已经实现了一种编程语言(我们现在将其称为A )。A与C非常相似。
我希望我的用户能够访问现有 C 库中的函数和数据结构。这可能吗?如果是的话,一个幼稚的实现会是什么样子?
A
这很大程度上取决于A是什么类型的语言。
如果它是编译语言,那么您需要生成适当的汇编代码(查找“调用约定”,特别是 C 调用约定)来调用适当的 C 函数。如果您使用 LLVM,则可以通过使用declareandcall语句相当轻松地完成此操作。完成此操作后,您需要将可执行文件链接到相关 C 库。
但是,如果它是解释性语言,那么您将需要动态加载该库。如何执行此操作是特定于平台的:例如,在 UNIX 类型的系统上,这可以通过该dlopen函数来实现。