GOOGLE ADS

вторник, 10 мая 2022 г.

В файле node-gyp binding.gyp, как включить различные файлы библиотек на основе системной арки (32-разрядная, 64-разрядная))

В настоящее время я пытаюсь подключить С++ к проекту 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.

Комментариев нет:

Отправить комментарий

Laravel Datatable addColumn returns ID of one record only

Я пытаюсь использовать Yajra Datatable для интеграции DataTable на свой веб-сайт. Я смог отобразить таблицу, но столкнулся с проблемой. В по...