c++ - 找不到符号 : _libintl_gettext

标签 c++ macos node.js gettext dyld

我正在尝试使用 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/

相关文章:

javascript - 如何在nodeJS中使用 mqtt.Client(streamBuilder, options) 构造函数

javascript - 在不影响所有对象字段的情况下映射对象数组

cocoa - 独立的、可启动的 OS X 应用程序

macos - OS X 中的并行 STL 算法

macos - ld:在带有 gcc/clang -static 标志的 OSX 10.6 上找不到 -lcrt0.o 的库

c++ - boost asio io_service 是否保证两个并行调用链的执行?

node.js - Express 与浏览器同步

c++ - Boost::signals2 - 描述带有插槽的对象

c++ - 如何使用 C++ 原子

C++工厂实现麻烦