找不到符号:_libintl_gettext

我正在尝试使用C ++和node-gyp创build一个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作为一个库来dynamic链接。 您需要添加如下内容:

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

到您的binding.gyp文件。 libintl没有被静态或dynamic地链接到你的应用程序,这就是为什么你会得到符号错误。

编辑:

你也可以做类似的事情:

 { "targets": [{ "target_name": "...", "sources": [ "..." ], "link_settings": { "libraries": ["libintl.8.dylib"] } }] }