最近公司让我研究node调用C++,C++的代码是调用了GDAL库开发的功能。要在tile.cc文件中调用头文件

这里#include调用的gdal_priv.h和ogrsf_frmts.h头文件在gdal/include文件夹中,所以要在binding.gyp文件中source后面添加
"include_dirs": [
"./gdal/include"
],然后如果现在就运行node-gyp configure build命令会报“无法解析的外部符号”的错误,这是因为还需要加入调用的链接库,需要在binding.gyp文件中加入
'libraries': [
"../gdal/lib/gdal_i.lib",
],这时的binding.gyp文件为
{
"targets": [
{
"target_name": "addon",
"sources": [
"./C++_02/tile.cc"
],
"include_dirs": [
"./gdal/include"
],
'libraries': [
"../gdal/lib/gdal_i.lib",
],
}
]}这时再进行node-gyp configure build命令就不会报错生成addon.node文件,但是当我运行test.js文件
const addon=require(‘./build/Release/addon')
var imagefile = "/vsicurl/http://sasmac.oss-cn-beijing.aliyuncs.com/cog.tif";
var x = 160;
var y = 83;
var l = 9;
console.log(addon.tileload(imagefile, x, y, l));会报错’找不到指定的模块’,但是我们在build/Release文件中能找到addon.node文件,这是因为缺少依赖也就是缺少.dll。下载 Dependency Walker,这个软件可以帮你确定一下缺少什么.dll,下载地址:http://www.dependencywalker.com/。我将addon.node文件添加到Dependency Walker发现缺少gdal/bin中的.dll。我将gdal/bin中的.dll文件复制到addon.node目录下,这时运行test.js文件就可以正常使用了。









