2

我正在尝试使用 C++ 和node-gyp. 该软件包依赖于 GNU 的 Gettext 库。我目前正在使用 Mac OS X Mountain Lion。我曾尝试通过手动、通过 Homebrew 甚至通过 Fink 自己安装包。

该程序通过 Terminal.app 运行,并且包编译。我可以.node很好地使用该模块,除非我使用库中使用gettext. 我在 REPL 中收到以下错误,然后 REPL 退出。

dyld: lazy symbol binding failed: Symbol not found: _libintl_gettext
  Referenced from: /Users/KevinMartin/Dropbox/www/node-locale/build/Release/locale.node
  Expected in: dynamic lookup

dyld: Symbol not found: _libintl_gettext
  Referenced from: /Users/KevinMartin/Dropbox/www/node-locale/build/Release/locale.node
  Expected in: dynamic lookup

Trace/BPT trap: 5

提前致谢。

4

1 回答 1

0

这可能是因为您没有将libintl其列为要动态链接的库。您需要添加以下内容:

{
  "targets": [
    {
      "target_name": "...",
      "sources": ["..."],
      "libraries": ["/path/to/gettext/lib/libintl.a"]
    }
}

到您的 binding.gyp 文件。libintl没有在您的应用程序中静态或动态链接,这就是您收到符号错误的原因。

编辑:

您可能还可以执行以下操作:

{
    "targets": [{
        "target_name": "...",
        "sources": [
            "..."
        ],
        "link_settings": {
             "libraries": ["libintl.8.dylib"]
        }
     }]
}
于 2015-04-02T20:57:11.337 回答