Статическое связывание библиотек ffmpeg с собственным дополнением к узлу C++

Я пытаюсь запустить аддон узла, который ссылается на библиотеки без необходимости включать их динамическую библиотеку.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) для правильной работы без необходимости.dll, которые я должен был включить в прошлом.

РЕДАКТИРОВАТЬ

Возможно, эта проблема так же проста, как: Как вы статически связываете эти библиотеки FFmpeg в Windows и не имеете ничего общего с конкретным узлом.

0 ответов

Другие вопросы по тегам