将ffmpeg库静态链接到本机C ++节点插件

时间:2019-05-16 01:48:06

标签: node.js ffmpeg node-addon n-api node-addon-api

我试图运行一个链接到库的节点插件,而不必包含其动态.dll库:

当我尝试包括其静态归档文件:Windows上的.dll.a扩展名时,节点插件返回错误:

$ 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。

编辑

这个问题很可能很简单:您如何在Windows上静态链接这些FFmpeg库,而不是专门与节点有关。

0 个答案:

没有答案