首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Node C++模块共享库

Node C++模块共享库
EN

Stack Overflow用户
提问于 2019-06-29 13:03:08
回答 2查看 658关注 0票数 1

我正在尝试创建一个Node模块,用于与Steam C++接口。库文件是./steam/lib/linux64/libsteam_api.so,头文件在./steam中。

我已经创建了一个用于测试的小型常规C++文件,它成功地使用了使用#include "steam_api.h"导入的Steam api。我像这样编译并导入了共享库:g++ -L./steam/lib/linux64 -Wl,-rpath=./steam/lib/linux64 -Isteam -lsteam_api main.cpp

binding.gyp:

代码语言:javascript
运行
复制
{
 "targets": [ {
  "target_name": "steam",
  "sources": [ "steam.cpp" ],
  "include_dirs": [
   "steam",
   "<!@(node -p \"require('node-addon-api').include\")"
  ],
  "cflags!": [ "-fno-exceptions" ],
  "cflags_cc!": [ "-fno-exceptions" ],
  "libraries": [ "./steam/lib/linux64/libsteam_api.so" ]
 } ]
}

当我尝试使用node-gyp编译Node模块时,我得到错误: g++:./steam/lib/linux64/libsteam_api.so:没有这样的文件或目录

如何正确导入共享库?

EN

回答 2

Stack Overflow用户

发布于 2019-07-01 11:22:06

在看了一些示例和大量的试验和错误之后,我能够纠正binding.gpy:

代码语言:javascript
运行
复制
{
 "targets": [ {
  "target_name": "steam",
  "sources": [ "steam.cpp" ],
  "include_dirs": [
   "steam",
   "<!@(node -p \"require('node-addon-api').include\")"
  ],
  "cflags!": [ "-fno-exceptions" ],
  "cflags_cc!": [ "-fno-exceptions" ],
  "libraries": [
   "-lsteam_api",
   "-L../steam/lib/linux64",
   "-Wl,-rpath=./steam/lib/linux64"
  ]
 } ]
}

库部分需要包括类似于使用g++调用它们的参数,除了"-L“与"-Wl,-rpath=”和g++输入的不同之处在于,出于某种未知的原因,需要启动一个文件夹级别。

票数 1
EN

Stack Overflow用户

发布于 2019-06-29 13:07:04

看起来node-gyp在运行时更改了当前目录,这会使您的相对路径无效。或者使用绝对路径,或者进行一些实验来查找新的当前目录,然后使用相对于该目录的路径。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56815192

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档