В настоящее время я пытаюсь подключить С++ к проекту nodejs, используя node-gyp. Моя текущая проблема заключается в том, что у меня есть 32-битный файл библиотеки и 64-битный файл библиотеки. Мой компьютер использует 64 бит. Если бы я использовал файлы 32-битной библиотеки и построил ее с помощью перестройки node-gyp, у нее были бы ошибки неразрешенного внешнего символа, когда я использую функции этой библиотеки, но если бы я использовал 64-битную библиотеку, она работала нормально. Я хочу знать, есть ли способ включить 32-битную библиотеку, если компьютер 32-битный, и включить 64-битную библиотеку, если он 64-битный.
я пытался бежать
node-gyp clean configure build --verbose --arch=ia32
но он вернет приведенную ниже ошибку, когда я запущу node index.js
testaddon.node is not a valid Win32 application.
мой файл binding.gyp для библиотек выглядит следующим образом:
"libraries": [
"../cppsrc/lib/some32.lib"
]
я проверил эту ссылку, но, похоже, в условиях нет вариантов для арки
Спасибо.
Решение проблемы
Возможное решение (этот старый вопрос) состоит в том, чтобы назвать файлы вашей библиотеки в соответствии с архитектурой, для которой они были созданы, а затем использовать переменные в binding.gyp, что на macos и linux можно сделать следующим образом:
"libraries": [
"../cppsrc/lib/some.<!(uname -m | tr A-Z a-z).lib"
]
В зависимости от используемой вами оболочки в Windows, вероятно, есть что-то эквивалентное.
Подробнее см. https://gyp.gsrc.io/docs/InputFormatReference.md#Variables-and-Conditionals.
Комментариев нет:
Отправить комментарий