Я пытаюсь создать модуль NodeJS, используя C ++ и node-gyp
, Пакет зависит от библиотеки Gettext GNU. В настоящее время я использую 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"]
}
}]
}
Других решений пока нет …