c++ - 在 C 和我的语言之间创建 FFI

标签 c++ c ffi language-implementation language-binding

假设我实现了一种编程语言(我们暂时称它为A)。 A 与 C 非常相似。

我希望我的用户能够访问现有 C 库中的函数和数据结构。这可能吗?如果是,那么天真的实现会是什么样子?

一个

  • 用C++实现
  • 编译成机器码
  • 需要访问闭源 C 库

最佳答案

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

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

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

关于c++ - 在 C 和我的语言之间创建 FFI,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29449809/

相关文章:

java - 让 Java 与 Python、C、C++ 和 Ruby 对话

c - 我应该如何构造随机质询以进行质询-响应身份验证?

c - 此 C 代码有问题

c++ - FFI/MemoryPointer 内存分配

c++ - const char * 测试与字符是否相等

c++ - PrintWindow函数在notepad.exe中出错

c++ - std::vector 线程对我来说是安全的吗?

c - 从二进制文件读取结构体 (C)

rust - 链接到具有 extern "C"函数的 C++ 库

pointers - 如何将 Rust 结构的引用/指针传递给 C ffi 接口(interface)?