我正在尝试使用 C++ 和 node-gyp
创建一个 NodeJS 模块。该包依赖于 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
提前致谢。
最佳答案
这可能是因为您没有将 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"]
}
}]
}
关于c++ - 找不到符号 : _libintl_gettext,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13759044/