我使用 node-addon-api 封装了 C++ 代码:
Napi::String Method(const Napi::CallbackInfo &info)
{
Napi::Env env = info.Env();
time_t rawtime;
struct tm *timeinfo;
char system_date_buffer[80];
char iso_date_buffer[80];
time(&rawtime);
timeinfo = localtime(&rawtime);
setlocale(LC_ALL, "");
strftime(system_date_buffer, 80, "%x", timeinfo);
string sysDateFormat(system_date_buffer);
strftime(iso_date_buffer, 80, "%%Y-%m-%d", timeinfo);
string isoDateFormat(iso_date_buffer);
return Napi::String::New(env, sysDateFormat);
}
初始化:
Napi::Object Init(Napi::Env env, Napi::Object exports)
{
exports.Set(Napi::String::New(env, "sysDateFormat"), Napi::Function::New(env, Method));
exports.Set(Napi::String::New(env, "isoDateFormat"), Napi::Function::New(env, Method));
return exports;
}
如何返回不同的值或导出对象?以上我只返回
返回 Napi::String::New(env, sysDateFormat);
我如何返回isoDateFormat
?我的想法是将 sysDateFormat 和 isoDateFormat 放入对象并返回它但不确定语法
目前我只返回字符串
更新:
我使用数组来存储这两个值,但返回类型显示编译时错误:没有重载函数“Napi::Array::New”的实例与参数列表匹配 - 参数类型为:(Napi: :Env, std::string [2])
Napi::Array Method(const Napi::CallbackInfo &info)
{
Napi::Env env = info.Env();
time_t rawtime;
struct tm *timeinfo;
char system_date_buffer[80];
char iso_date_buffer[80];
string dateArray [2];
time(&rawtime);
timeinfo = localtime(&rawtime);
setlocale(LC_ALL, "");
strftime(system_date_buffer, 80, "%x", timeinfo);
string sysDateFormat(system_date_buffer);
strftime(iso_date_buffer, 80, "%%Y-%m-%d", timeinfo);
string isoDateFormat(iso_date_buffer);
dateArray[0] = sysDateFormat;
dateArray[1] = iso_date_buffer;
return Napi::Array::New(env, dateArray); // error here
}
最佳答案
使用 Napi api 中的对象类型有效!
Napi::Object obj = Napi::Object::New(env);
obj.Set(Napi::String::New(env, "sysDateFormat"), sysDateFormat);
obj.Set(Napi::String::New(env, "isoDateFormat"), isoDateFormat);
关于c++ - 如何将对象从c导出到node addon api,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61634592/