node.js - NAPI 插件从 .node 文件中抛出“未定义的符号:omp_get_max_threads”
问题描述
这似乎是一个奇怪的错误。我尝试逐行调试本机代码,但这个错误似乎突然发生,就像在函数调用结束时一样。这似乎是由我正在使用的本机库中的某些代码部分引起的,因为如果我删除一些函数调用,这个错误似乎消失了。
节点版本:12.16.3 节点gyp版本:6.1.0
顺便说一句,我正在使用 nvm。如果这有帮助。
在搜索了 omp_get_max_threads 之后,我尝试将 -fopenmp 添加到 binding.gyp 文件中的编译器标志中,就像这样。
{
"targets": [{
"target_name": "custom_addon",
"cflags!": [ "-fno-exceptions" ],
"cflags_cc!": [ "-fno-exceptions" ],
"cflags": ["-fopenmp"],
"cflags_cc": ["-fopenmp"],
"sources": [
"custom_addon.cpp"
],
'include_dirs': [
"<!@(node -p \"require('node-addon-api').include\")",
"${workspaceRoot}"
],
'libraries': [],
'dependencies': [
"<!(node -p \"require('node-addon-api').gyp\")"
]
}]
}
尽管如此,问题仍然存在。顺便说一句,我使用的是 node-addon-api 包,而不是直接使用 n-api。
解决方案
呃..
就在发布这个之后,我发现你必须明确地将 libgomp 添加到 binding.gyp。
{
"targets": [{
"target_name": "custom_addon",
"cflags!": [ "-fno-exceptions" ],
"cflags_cc!": [ "-fno-exceptions" ],
"cflags": ["-fopenmp"],
"cflags_cc": ["-fopenmp"],
"sources": [
"custom_addon.cpp"
],
'include_dirs': [
"<!@(node -p \"require('node-addon-api').include\")",
"${workspaceRoot}"
],
'libraries': ["/usr/lib/x86_64-linux-gnu/libgomp.so.1"],
'dependencies': [
"<!(node -p \"require('node-addon-api').gyp\")"
]
}]
}
推荐阅读
- python - 如何修改matplotlib中的图例和背景?
- sql - 将行连接成一定长度的字符串
- python - Pandas dataframe.to_html() - 编辑文本颜色并添加标题列的背景颜色
- html - 如何将单元格内的 HTML 文本查看到谷歌表格中的新 html 选项卡
- python - 遍历 pandas 行,寻找一个特定的数字并计算我们遇到它的次数
- elasticsearch - 如何过滤具有相同嵌套属性值的文档
- mongodb - MongoDb 使用聚合时的排序问题
- spring-boot - @RestControllers 中有 @before 和 @after 的等价物吗?
- python - 在网络抓取时捕获连接错误等
- regex - 用于 unix 纪元时间戳的 Notepad++ 正则表达式