1

Let's say that I have implemented a programming language, (we'll call it A for now). A is pretty similiar to C.

I want my users to be able to access functions and data structures from already-existing C libraries. Is this possible? If it is, how would a naive implementation look ?

A

  • is implemented in C++
  • compiles to machine code
  • needs to access closed-source C libraries
4

1 回答 1

4

这在很大程度上取决于A是哪种语言。

如果它是一种编译语言,那么您需要生成适当的汇编代码(查找“调用约定”,特别是 C 调用约定)来调用适当的 C 函数。如果您使用的是 LLVM,则可以使用declareandcall语句相当轻松地做到这一点。完成此操作后,您需要将可执行文件链接到相关的 C 库。

但是,如果它是一种解释语言,那么您需要动态加载该库。你如何做到这一点是特定于平台的:例如,在 unix 类型的系统上,这可以通过dlopen函数来​​实现。

于 2015-04-04T18:20:36.600 回答