awesome-repositories.com
博客
awesome-repositories.com

通过 AI 驱动的搜索,发现最优秀的开源仓库。

探索精选搜索开源替代品自托管软件博客网站地图
项目关于排名机制媒体报道MCP 服务器
法律隐私政策服务条款
© 2026 Bringes Technology SRL·VAT RO45896025·hello@awesome-repositories.com
·
node-ffi avatar

node-ffi/node-ffi

0
View on GitHub↗
4,322 星标·400 分支·JavaScript·MIT·6 次浏览

Node Ffi

node-ffi 是一个 Node.js 的外部函数接口库,无需编写手动 C++ 绑定即可调用原生 C 动态库中的函数。它作为一个系统,用于将共享对象和 DLL 加载到进程内存中,将 JavaScript 值转换为二进制表示,并在运行时执行外部二进制文件。

该项目利用 libffi 库的包装器来构建调用帧并使用动态参数执行原生函数。它的特色在于提供了一个用于分配原始指针的原生内存管理器,以及一个将复杂 C 结构映射到 JavaScript 对象的映射系统。

该工具包涵盖了广泛的原生互操作性功能,包括自动数据类型转换和创建可执行内存存根,允许原生库触发 JavaScript 回调。为了保持主线程响应能力,它支持异步执行模型,将原生函数调用卸载到单独的线程池中。

Features

  • Dynamic Library Function Executions - Provides the core ability to load external shared objects and execute native C functions directly from JavaScript.
  • Foreign Function Interfaces - Provides a comprehensive interface and binding layer for seamless communication between JavaScript and native libraries.
  • Memory-Mapped Data Structures - Connects complex C data structures to JavaScript objects for efficient reading and writing of structured memory blocks.
  • C-to-JavaScript Type Mappings - Provides systems for converting data types specifically between C and JavaScript for memory-compatible function calls.
  • C Struct Mappings - Maps complex C structures and memory blocks into JavaScript objects for reading and writing structured memory.
  • Dynamic Library Loading - Loads external shared objects or DLLs into the process memory space at runtime via system call interfaces.
  • Raw Memory Allocation - Provides a low-level interface for allocating raw contiguous memory buffers and manipulating C-style pointers.
  • Foreign Function Interface Calls - Executes functions from shared libraries by mapping JavaScript types to native C equivalents using libffi.
  • Function-Pointer Callbacks - Creates executable memory stubs that map JavaScript functions as C-style function pointers for native library callbacks.
  • Native C-JavaScript Bridges - Provides an interface designed for data exchange and function calls between native C/C++ code and JavaScript.
  • Native Library Wrappers - Wraps the libffi library to construct native call frames and execute functions with dynamic arguments.
  • Node.js Foreign Function Interfaces - A library for calling functions from native C dynamic libraries directly within Node.js without writing manual C++ bindings.
  • Pointer-Based Memory Access - Implements direct manipulation and extraction of data from raw pointers to handle C structs across the language boundary.
  • Native Library Integration - Allows calling functions from external C or C++ dynamic libraries directly within Node.js without manual glue code.
  • Dynamic Library Loaders - Loads shared objects and DLLs into process memory to execute external binaries at runtime.
  • Native Callbacks - Maps JavaScript functions to C-style function pointers, allowing native libraries to trigger logic within the runtime.
  • Asynchronous Native Calls - Offloads native function execution to a separate thread pool to prevent blocking the Node.js main event loop.
  • Native Callback Stubs - Creates function pointers in memory that allow native libraries to trigger JavaScript callbacks.
  • Worker Thread Patterns - Offloads native function calls to a separate thread pool to prevent blocking the JavaScript main event loop.

Star 历史

node-ffi/node-ffi 的 Star 历史图表node-ffi/node-ffi 的 Star 历史图表

AI 搜索

探索更多 awesome 仓库

用简单的语言描述您的需求 —— AI 将根据相关性为您从数千个精选开源项目中进行排序。

Start searching with AI

Node Ffi 的开源替代方案

相似的开源项目,按与 Node Ffi 的功能重合度排序。
  • java-native-access/jnajava-native-access 的头像

    java-native-access/jna

    8,916在 GitHub 上查看↗

    JNA is a foreign function interface and native memory mapper that allows Java applications to call functions in shared native libraries without writing custom JNI wrapper code. It serves as a JNI alternative framework for invoking C functions and mapping native data structures using high-level interfaces. The library distinguishes itself through its ability to translate Java objects and primitives into C-style structs, unions, and pointers for cross-platform memory exchange. On Windows, it provides a dedicated toolkit for interacting with Component Object Model objects using both early and la

    Java
    在 GitHub 上查看↗8,916
  • bytedeco/javacppbytedeco 的头像

    bytedeco/javacpp

    4,697在 GitHub 上查看↗

    JavaCPP is a JNI C++ bridge and foreign function interface that provides a binding generator, a native library loader, and a native memory manager. It automates the creation of Java wrappers around native C++ headers and shared libraries to enable interoperability between the two languages. The project features a C++ binding generator that parses header files to automatically produce the necessary glue code and interfaces for calling native functions. It includes a native library loader that locates and extracts platform-specific binaries from the classpath into a local cache for runtime exec

    Javacc-plus-pluscpp
    在 GitHub 上查看↗4,697
  • nodejs/node-addon-apinodejs 的头像

    nodejs/node-addon-api

    2,400在 GitHub 上查看↗

    This project provides a header-only C++ wrapper for the Node-API, serving as a framework for building high-performance native addons for Node.js. It acts as a bridge between C++ and JavaScript, offering an object-oriented interface that simplifies the creation of compiled extensions while managing the complexities of the language boundary. The library distinguishes itself by providing type-safe abstractions for data marshalling and memory management, ensuring that native and script-side objects are tracked and reclaimed correctly. It includes mechanisms for coordinating asynchronous tasks bet

    C++nodenodejs
    在 GitHub 上查看↗2,400
  • torch/torch7torch 的头像

    torch/torch7

    9,127在 GitHub 上查看↗

    Torch7 is a scientific computing environment and tensor computation library used for deep learning research and numerical analysis. It functions as a Lua-based framework for training neural networks and learning agents, providing a toolkit for implementing architectures and training through reinforcement learning algorithms. The project is distinguished by its tight integration with C, utilizing a binding layer to map high-level scripting to low-level C structures for direct memory access. It supports hardware-accelerated computation by offloading linear algebra and convolution operations to

    C
    在 GitHub 上查看↗9,127
查看 Node Ffi 的所有 30 个替代方案→

常见问题解答

node-ffi/node-ffi 是做什么的?

node-ffi 是一个 Node.js 的外部函数接口库,无需编写手动 C++ 绑定即可调用原生 C 动态库中的函数。它作为一个系统,用于将共享对象和 DLL 加载到进程内存中,将 JavaScript 值转换为二进制表示,并在运行时执行外部二进制文件。

node-ffi/node-ffi 的主要功能有哪些?

node-ffi/node-ffi 的主要功能包括:Dynamic Library Function Executions, Foreign Function Interfaces, Memory-Mapped Data Structures, C-to-JavaScript Type Mappings, C Struct Mappings, Dynamic Library Loading, Raw Memory Allocation, Foreign Function Interface Calls。

node-ffi/node-ffi 有哪些开源替代品?

node-ffi/node-ffi 的开源替代品包括: java-native-access/jna — JNA is a foreign function interface and native memory mapper that allows Java applications to call functions in shared… bytedeco/javacpp — JavaCPP is a JNI C++ bridge and foreign function interface that provides a binding generator, a native library loader,… torch/torch7 — Torch7 is a scientific computing environment and tensor computation library used for deep learning research and… nodejs/node-addon-api — This project provides a header-only C++ wrapper for the Node-API, serving as a framework for building high-performance… libffi/libffi — libffi is a foreign function interface library that enables calling functions written in other languages at runtime.… janet-lang/janet — Janet is a Lisp-based dynamic programming language featuring a register-based bytecode virtual machine and an…