我已经获得了使用c++ dll的所有适当文件:
我试图在给定的文件中使用节点,以便我们可以在节点服务器中使用这个c++ dll。
问题是,当我尝试使用node构建时,它会抛出以下错误:
LINK : fatal error LNK1181: cannot open input file 'lib\MathUtils.lib' [C:\Development\Github\node-thin-client\service\build\interface.vcxproj]我使用的节点版本是: 8.11.2
node版本是: 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"]
}
]
}发布于 2019-01-25 16:01:42
我遇到了类似的问题。我知道已经有一段时间了,但是如果其他人在构建一个链接到其他dll的节点插件时遇到这种情况,下面是我所做的:
您正在获取链接错误,因为项目文件是在项目下的./build目录中生成的,但是您引用了./lib/MathUtils.lib。如果在Visual中打开生成的.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" ]
}
]
}]
]https://stackoverflow.com/questions/50708378
复制相似问题