gpt4 book ai didi

node.js - 从 Node.js C++ 模块导出整数值

转载 作者:太空宇宙 更新时间:2023-11-03 23:10:42 25 4
gpt4 key购买 nike

我正在为 Node.js 编写一个 C++ 模块,它包装了一个 C 库,因此我们可以从 JavaScript 使用 C 库。 C 库中的函数之一采用枚举参数,枚举值包含在相应的头文件中。我想从 C++ 模块将枚举值导出为整数,这样 Node.js 应用程序就不必对该值进行硬编码。这是基本思想:

C:

typedef enum 
{
LOGLEVEL_ERROR = 0,
LOGLEVEL_WARN,
LOGLEVEL_INFO
} log_level_t;

write_to_log(log_level_t level, char* message);

C++:

Logger::Write(int level, char* message)
{
write_to_log(level, message);
}

Node.js:

// This is what I want:
logger.write(logger.ERROR, "Oh no! Something bad happened.");

如何从 C++ 公开 LOGLEVEL_ERROR 以便我可以在 JS 中使用 logger.ERROR? (我什至可以在 JS 中使用 logger.LOGLEVEL_ERROR 。)我发现一个旧的 Node.js native 模块使用了宏 EXPORT_INT32 但这似乎不存在不再(我正在使用 Node.js 0.8.8)。

最佳答案

将数字换行,如下所示:

HandleScope scope;

/** method code here **/

Local<Number> num = Number::New(5);
return scope.Close(num);

请参阅我的模块 kexec 作为示例:https://github.com/jprichardson/node-kexec/blob/master/src/kexec.cc

编辑:哎呀,我没有完全清楚地阅读你的问题。我会在 JS 中声明这些值。

编辑2:经过进一步检查,似乎这可能有点哈利,但有可能。看来您可能想使用 V8 Juice

以下是相关部分:Converting Enums

希望这对一些人有帮助,但最简单的方法是在 JavaScript 中声明它们。

关于node.js - 从 Node.js C++ 模块导出整数值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12500737/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com