gpt4 book ai didi

c++ - 如何通过 Node N-API 使用第三方 dll、头文件和 lib 文件

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:14:26 25 4
gpt4 key购买 nike

我已经获得了使用 c++ dll 的所有适当文件:

  • 头文件
  • 库文件
  • 动态链接库

我正在尝试使用 Node N-API使用给定的文件,这样我们就可以在我们的 Node 服务器中使用这个 c++ dll。

问题是,当我尝试使用 node-gyp 进行构建时,它会抛出以下错误:

LINK : fatal error LNK1181: cannot open input file 'lib\MathUtils.lib' [C:\Development\Github\node-thin-client\service\build\interface.vcxproj]

我使用的 Node 版本是:8.11.2

node-gyp版本为:3.6.2

我的binding.gyp文件如下:

{
"variables": {
"dll_files": [
"lib/MathUtils.dll"
]
},
"targets": [
{
"target_name": "interface",
"sources": [
"src/interface/interface.cpp"
],
"include_dirs": [
"<!@(node -p \"require('node-addon-api').include\")",
"include"
],
"dependencies": [
"<!(node -p \"require('node-addon-api').gyp\")"
],
"libraries": [
"lib/MathUtils.lib"
],
"cflags!": ["-fno-exceptions"],
"cflags_cc!": ["-fno-exceptions"],
"defines": ["NAPI_CPP_EXCEPTIONS"]
}
]
}

最佳答案

我遇到了类似的问题。我看到已经有一段时间了,但如果其他人在构建链接到其他 dll 的 Node 插件时遇到这个问题,我就是这样做的:

您收到链接错误是因为项目文件是在您项目下的./build 目录中生成的,但您引用了./lib/MathUtils.lib .如果您在 Visual Studio 中打开生成的 .sln 项目,您就会看到问题。所以你可以这样做:

"libraries": [../lib/MathUtils.lib"] 

"libraries": [ "<(module_root_dir)/lib/MathUtils.lib" ]

注意,首先相对路径上升一个目录。第二个将把完整路径放在项目的链接器行中。

另外对我来说,variables 部分没有将 dll 复制到发布目录,它似乎什么也没做。相反,我使用了拷贝部分:

     "conditions": [        
["OS==\"win\"", {
"libraries": [ "<(module_root_dir)/tsflexnet/TSFlexnetCLib.lib" ],
"copies": [
{
"destination": "<(module_root_dir)/build/Release/",
"files": [ "<(module_root_dir)/tsflexnet/TSFlexnetCLib.dll" ]
}
]
}]
]

关于c++ - 如何通过 Node N-API 使用第三方 dll、头文件和 lib 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50708378/

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