2

C++ と を使用して NodeJS モジュールを作成しようとしています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 に答える