如何获取C+的多个实例+;nodejs中的插件? 我想在NoDEJS中的多个实例中使用C++库。我使用绑定NPM模块来包装C++代码。但最终,C++库变成了共享对象。请帮我做这个

如何获取C+的多个实例+;nodejs中的插件? 我想在NoDEJS中的多个实例中使用C++库。我使用绑定NPM模块来包装C++代码。但最终,C++库变成了共享对象。请帮我做这个,c++,node.js,binding,C++,Node.js,Binding,我使用了require('bindings')('library_name')和new关键字 在需要下一个实例之前,我已清除了require cache 我使用了npm模块来清除缓存 for (var i = 0; i < config.data.length; i++) { libraryObj[data[i]] = new require('library-name'); // c++ library wrapper } for(var i=0;i我建议你重新设计C+

我使用了require('bindings')('library_name')和new关键字

在需要下一个实例之前,我已清除了require cache 我使用了npm模块来清除缓存

for (var i = 0; i < config.data.length; i++) {
        libraryObj[data[i]] = new require('library-name'); // c++ library wrapper
}
for(var i=0;i

<>无论我做什么,C++库总是共享,这不是预期的行为。

< P>我建议你重新设计C++ ADDO,这样你就不能得到这个要求。 不能从同一进程再次加载同一模块,如果加载,它将返回相同的句柄(引用)

您可以从其他进程加载

在窗户上

系统在所有加载的进程上维护每个进程的引用计数 模块。调用LoadLibrary会增加引用计数。使命感 FreeLibrary或FreeLibraryAndExitThread函数递减 参考计数。系统在引用计数时卸载模块 达到零或进程终止时(无论 参考计数)

在Linux上

如果使用dlopen()再次加载相同的库,则相同的文件 返回句柄。dl库维护了的引用计数 库句柄,因此动态库在 dlclose()的调用次数与dlopen()的调用次数相同 成功了。如果存在_init()例程,则只调用一次。 但随后的RTLD_调用现在可能会强制对 库之前已加载RTLD_


这听起来像是XY问题。您是否试图加载同一个库的多个实例,因为该库具有每个实例都需要保留的全局状态?您可能需要重新构建库。稍后,我发现只有最新的节点工作程序支持此功能。我重新设计了当前的图书馆以满足我的需要。