Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/38.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
错误:无法打开共享对象文件:没有此类文件或目录 我写了C++的ADDON。尝试使用名为libSample.so的示例库,该库具有函数printHello的声明: void printHello() { std::cout << "Hello World\n"; }_C++_Node.js_Add On_Node.js Addon - Fatal编程技术网

错误:无法打开共享对象文件:没有此类文件或目录 我写了C++的ADDON。尝试使用名为libSample.so的示例库,该库具有函数printHello的声明: void printHello() { std::cout << "Hello World\n"; }

错误:无法打开共享对象文件:没有此类文件或目录 我写了C++的ADDON。尝试使用名为libSample.so的示例库,该库具有函数printHello的声明: void printHello() { std::cout << "Hello World\n"; },c++,node.js,add-on,node.js-addon,C++,Node.js,Add On,Node.js Addon,一些用法libCore.so //#include <core.h> definition of core library lies in this header void CreateObject(const FunctionCallbackInfo<Value>& args) { Isolate* isolate = args.GetIsolate(); Local<Object> obj = Obj

一些用法libCore.so

    //#include <core.h> definition of core library lies in this header
    void CreateObject(const FunctionCallbackInfo<Value>& args) {
        Isolate* isolate = args.GetIsolate();
        Local<Object> obj = Object::New(isolate);
        obj->Set(String::NewFromUtf8(isolate, "msg"), args[0]->ToString());
        //usage of core library
        Core core;
        args.GetReturnValue().Set(obj);
    }

我将感谢您的回答或建议

找到了简单的解决方案,但我可能不适合长期开发。我认为问题在于共享库所需的依赖库。您可以通过终端上的命令查看所需的库
lld libCore.so

    linux-vdso.so.1 =>  (0x00007ffcae9d6000)
    libasound.so.2 => /usr/lib/x86_64-linux-gnu/libasound.so.2 (0x00007fa19dc07000)
    libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007fa19d9e9000)
    libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007fa19d7e5000)
    libstdc++.so.6 => /usr/lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007fa19d45c000)
    libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007fa19d153000)
    libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007fa19cf3a000)
    libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fa19cb73000)
    /lib64/ld-linux-x86-64.so.2 (0x00005637d3532000)
    librt.so.1 => /lib/x86_64-linux-gnu/librt.so.1 (0x00007fa19c96b000)
在“我的共享库”的从属库列表上方

解决方案:

您应该将共享库复制到/usr/lib位置。这样就解决了我的问题

cp path/where/yourLocated/libCore.so /usr/lib 

错误很明显,node无法找到您的加载项库。您可以找到有关节点如何对模块执行搜索的相关信息。@VTT有趣的是,它在同一目录中找到另一个库。但是当我尝试使用libCore.so时。它显示这样的错误。谢谢你的链接!您能解释一下为什么在linux系统上不能将这些.so(共享对象文件)添加到/opt/目录吗?我知道这个问题更多的是关于linux文件系统的层次结构。是的,我想你可以把它放在那里,但是你应该把它链接到项目配置中。我可能是错误的,因为暂时没有做C++和节点JS。2020年可能会有新的选择。无论如何,祝你好运。
    linux-vdso.so.1 =>  (0x00007ffcae9d6000)
    libasound.so.2 => /usr/lib/x86_64-linux-gnu/libasound.so.2 (0x00007fa19dc07000)
    libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007fa19d9e9000)
    libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007fa19d7e5000)
    libstdc++.so.6 => /usr/lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007fa19d45c000)
    libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007fa19d153000)
    libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007fa19cf3a000)
    libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fa19cb73000)
    /lib64/ld-linux-x86-64.so.2 (0x00005637d3532000)
    librt.so.1 => /lib/x86_64-linux-gnu/librt.so.1 (0x00007fa19c96b000)
cp path/where/yourLocated/libCore.so /usr/lib