我试图运行一个链接到库的节点插件,而不必包含其动态.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库,而不是专门与节点有关。