当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Node.js process.dlopen(module, filename[, flags])用法及代码示例


process.dlopen(module, filename[, flags])

历史
版本变化
v9.0.0

添加了对 flags 参数的支持。

v0.1.16

添加于:v0.1.16


参数

process.dlopen() 方法允许动态加载共享对象。它主要由require() 用于加载 C++ 插件,不应直接使用,除非在特殊情况下。换句话说, require() 应该优先于 process.dlopen(),除非有特殊原因,例如自定义 dlopen 标志或从 ES 模块加载。

flags 参数是一个允许指定 dlopen 行为的整数。有关详细信息,请参阅 os.constants.dlopen 文档。

调用process.dlopen() 时的一个重要要求是必须传递module 实例。然后可以通过 module.exports 访问由 C++ 插件导出的函数。

下面的示例显示了如何加载名为 local.node 的 C++ 插件,该插件导出 foo 函数。通过传递RTLD_NOW 常量,在调用返回之前加载所有符号。在本例中,假定常数可用。

import { dlopen } from 'node:process';
import { constants } from 'node:os';
import { fileURLToPath } from 'node:url';

const module = { exports: {} };
dlopen(module, fileURLToPath(new URL('local.node', import.meta.url)),
       constants.dlopen.RTLD_NOW);
module.exports.foo();const { dlopen } = require('node:process');
const { constants } = require('node:os');
const { join } = require('node:path');

const module = { exports: {} };
dlopen(module, join(__dirname, 'local.node'), constants.dlopen.RTLD_NOW);
module.exports.foo();

相关用法


注:本文由纯净天空筛选整理自nodejs.org大神的英文原创作品 process.dlopen(module, filename[, flags])。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。