Creating FFI between C and my language

864 Views Asked by At

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
1

There are 1 best solutions below

3
On BEST ANSWER

This largely depends on what sort of language A is.

If it is a compiled language, then you need to produce appropriate assembler code (look up "calling conventions", particularly the C calling convention) to call the appropriate C function. If you're using LLVM, you can do this fairly easily by using the declare and call statements. After you've done that, you'll need to link the executable against the C library in question.

If it is an interpreted language, however, then you'll need to dynamically load the library. How you do this is platform-specific: for instance, on unix-type systems, this can be achieved via the dlopen function.