gpt4 book ai didi

c++ - dyld : lazy symbol binding failed: Symbol not found. 预期在:平面命名空间

转载 作者:搜寻专家 更新时间:2023-10-31 23:56:49 25 4
gpt4 key购买 nike

我正在尝试根据我同事编写的代码为 Node 创建自己的 C++ 插件。

它编译为 file.node,然后当我尝试在 node 中使用它时它崩溃了。

我尝试过预构建库,然后使用 library.dylib 并通过 node-gyp 将其构建在一起。

这两种方法都会编译并在运行时抛出错误。

我还能做什么?

我正在研究 OSX Mojave。

我检查过:

How to include c++ libraries so that node-gyp can link?

dyld: lazy symbol binding failed

整个错误:

dyld: lazy symbol binding failed: Symbol not found: 
__ZN3mds7computeERNSt3__16vectorINS1_IdNS0_9allocatorIdEEEENS2_IS4_EEEE
Referenced from: /.../node_folder/build/release/file.node
Expected in: flat namespace

我的 gyp 文件:

{
"targets": [
{
"target_name": "name",
"sources": ["file.cc"],
"include_dirs": [
"<!(node -e \"require('nan')\")",
"/path/to/cpp/src/"
],
"link_settings": {
"libraries": ["-L/path/to/dylib/directory"]
},
"libraries": ["-L/path/to/dylib/directory"]
}
]
}

我的包.json

{
...
"dependencies": {
"nan": "^2.12.1",
"node-gyp": "^3.8.0"
},
"scripts": {
"compile": "node-gyp rebuild",
"start": "node index.js"
},
"gypfile": true
}

我的绑定(bind)文件:

#include <nan.h>
#include <iostream>
#include <my_header_file.h>

using namespace v8;

NAN_METHOD(compute)
{
if (!info[0]->IsArray())
{
Nan::ThrowTypeError("Argument myst be an array");
return;
}
...

std::vector<std::vector<double>> vector;

... (filling the vector with data)

//static std::vector<std::vector<double>> compute(std::vector<std::vector<double>> & distances_matrix);
mds::compute(vector);
}

NAN_MODULE_INIT(Initialize)
{
NAN_EXPORT(target, compute);
}

NODE_MODULE(addon, Initialize);

最佳答案

我看到您正在 #include <my_header_file.h> 导入标题.如果您从自定义类中为 NAN_METHOD 调用方法,则需要内联调用它,否则编译器将不知道去哪里查找。

运行“c++filt (missing symbol)”来分解并查看需要在哪里调用它

例子而不是 method()使用 Class::method()

您丢失的符号已删除是 mds::compute(std::__1::vector<std::__1::vector<double, std::__1::allocator<double> >, std::__1::allocator<std::__1::vector<double, std::__1::allocator<double> > > >&)

关于c++ - dyld : lazy symbol binding failed: Symbol not found. 预期在:平面命名空间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54589808/

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