I have been given all of the appropriate files to use a c++ dll:
I am attempting to use Node N-API with the given files so we can use this c++ dll in our node server.
The problem is that when I try to build with node-gyp it throws the following error:
LINK : fatal error LNK1181: cannot open input file 'lib\MathUtils.lib' [C:\Development\Github\node-thin-client\service\build\interface.vcxproj]
The node version I am using is: 8.11.2
The node-gyp version is: 3.6.2
my binding.gyp file is as follows:
{
"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"]
}
]
}
I ran into similar problems. I see it's been a while but in case anyone else runs into this while building a node plugin that links to other dlls, here is what I did:
You are getting the link error because the project file is generated in the ./build
directory under your project, but you referenced the ./lib/MathUtils.lib
. If you opened the generated .sln project in Visual Studio you would see the problem. So you can do:
"libraries": [../lib/MathUtils.lib"]
or
"libraries": [ "<(module_root_dir)/lib/MathUtils.lib" ]
Note, first the relative path goes up one directory. The second one will put the full path in the linker line of the project.
Also for me the variables
section did not copy the dll to the release directory, it seemed to do nothing. Instead I used a copies section:
"conditions": [
["OS==\"win\"", {
"libraries": [ "<(module_root_dir)/tsflexnet/TSFlexnetCLib.lib" ],
"copies": [
{
"destination": "<(module_root_dir)/build/Release/",
"files": [ "<(module_root_dir)/tsflexnet/TSFlexnetCLib.dll" ]
}
]
}]
]
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With