當前位置: 首頁>>編程示例 >>用法及示例精選 >>正文


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])。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。