我正在尝试构建lzham NodeJS绑定(bind),但是每当尝试从lzham调用函数时,都会不断收到symbol lookup error: [...] undefined symbol: [...]错误。

我像这样包含了lzham:

#define LZHAM_DEFINE_ZLIB_API
#include "lzham_static_lib.h"

我的binding.gyp文件如下所示:
{
  "targets": [
    {
      "target_name": "lzham",
      "sources": [
        "lzham.cc"
      ],
      "include_dirs": [
        "<!(node -e \"require('nan')\")",
        "lzham/include",
        "lzham/lzhamdecomp",
        "lzham/lzhamcomp",
      ],
    },
  ]
}

我正在Linux上编译。
var lzham = require('./build/Release/lzham.node'),
    buffer = require('fs').readFileSync('compressed');

lzham.decompress(buffer);

此代码调用C++中定义的函数,该函数依次调用lzham_z_inflateInit2,从而产生此错误:
node: symbol lookup error: /node-lzham/build/Release/lzham.node: undefined symbol: lzham_z_inflateInit2

最佳答案

试试这个,作为include_dirs的 sibling :

"libraries": [ "-llzham" ]

确切的库名称在您的系统上可能有所不同,但是希望它足够接近以使您走上正确的道路。

09-07 08:19