找不到符号:_libintl_gettext 我尝试用C++和节点GYP创建NoDEJS模块。该包依赖于GNU的Gettext库。我目前正在使用Mac OS X Mountain Lion。我曾尝试通过手动、自制甚至Fink来安装该软件包

找不到符号:_libintl_gettext 我尝试用C++和节点GYP创建NoDEJS模块。该包依赖于GNU的Gettext库。我目前正在使用Mac OS X Mountain Lion。我曾尝试通过手动、自制甚至Fink来安装该软件包,c++,macos,node.js,gettext,dyld,C++,Macos,Node.js,Gettext,Dyld,该程序通过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 Expec

该程序通过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"]
    }
}
{
    "targets": [{
        "target_name": "...",
        "sources": [
            "..."
        ],
        "link_settings": {
             "libraries": ["libintl.8.dylib"]
        }
     }]
}
到binding.gyp文件
libintl
在你的应用程序中没有被静态或动态链接,这就是你得到符号错误的原因

编辑:

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

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

不确定您是否找到了解决方案,可能是libedit可以提供符号。@Vishal这对我不起作用。在过去的几天里,libintl成了我最可怕的噩梦。