Я пытаюсь запустить аддон узла, который связывается с библиотеками без необходимости включать их динамическую библиотеку .dll
:
Когда я пытаюсь включить их статический архив: .dll.a
расширение в Windows, аддон узла возвращает ошибку:
$ node index.js --client
internal/modules/cjs/loader.js:840
return process.dlopen(module, path.toNamespacedPath(filename));
^
Error: The specified procedure could not be found.
Обычно это означает, что он ожидал загрузить какую-то другую функцию из библиотеки, но не смог ее найти. Если есть способ отладить это сообщение об ошибке более конкретно, я также хотел бы знать, как!
Я пытался изменить порядок библиотек, использовать разные расширения и т. Д.
Первоначально я использовал только расширение .lib вместо расширений .dll.a, и программа отлично работает, если я включаю .dll.
Код работает нормально, если я использую .lib файлы и помещаю их соответствующие .dll в тот же каталог, что и приложение, которое я выполняю.
Я использовал эти ресурсы:
Я использую N-API, и вот что я делаю в binding.gyp
:
'libraries': [
"ws2_32.lib",
"C:\\Users\\$(username)\\Desktop\\workspace\\ffmpeg-win64-dev\\lib\\libavcodec.dll.a",
"C:\\Users\\$(username)\\Desktop\\workspace\\ffmpeg-win64-dev\\lib\\libavutil.dll.a",
"C:\\Users\\$(username)\\Desktop\\workspace\\ffmpeg-win64-dev\\lib\\libswresample.dll.a",
Я ожидаю, что мое приложение (node index.js --client
) будет работать правильно без необходимости .dlls
, которую я должен был включить в прошлом.
EDIT
Вполне возможно, что эта проблема так же проста, как: Как вы статически связываете эти библиотеки FFmpeg в Windows и не имеют ничего общего с конкретным узлом.