windows服务器运行ffmpeg报错,mfplat.dll模块已加载但找不到入口点dllregisterserver

windows服务器运行ffmpeg报错-mfplat.dll模块已加载但找不到入口点dllregisterserver

1
首先找到对应的mfplat.dll版本。我的是将别人win7+64位系统的mfplat.dll即目录在C:\Windows\SysWOW64\拷贝到win7对应的C:\Windows\SysWOW64\目录下。
注意:
拷贝到电脑的C:\Windows\SysWOW64\而不是 C:\Windows\System32\。

2
在C:\Windows\System32\目录下找到cmd命令,右键以管理员方式打开(必须),然后cd到C:\Windows\SysWOW64\目录下注:cd到该目录下是因为需要以该目录下的regsvr32.exe注册。
即以下命令:

cd C:\Windows\SysWOW64

3 最后执行以下命令注册该dll。

regsvr32 drv43260.dll //有些人加/s选项,但是实际没啥用,因为他只是把错误信息隐藏了

执行完这条命令,实际上它仍会报无法找到入口点,但实际不影响我们程序的运行。

4
将mfplat.dll分别拷贝到C:\Windows\System32\,C:\Windows\SysWOW64\,程序.exe的目录下。执行程序即可运行。

5 分析出现上面的原因:
该dll是ffmpeg相关函数的动态库文件,为什么会出现上述错误呢?经过测试,发现原来是ffmpeg版本的原因,当我使用xxx-57.dll版本的动态时,能正常运行。
而当我使用xxx-58.dll(比57高版本)时,就出现了提示计算机丢失mfplat.dll,拷贝拷贝…搞着搞着又变成找不到入口点(本文的问题),可能是因为考错版本了,因为当时拷贝过C:\Windows\System32\目录的。。。所以当时也想过麻烦点将动态库版本换掉,但是还是嫌麻烦没做。
最后还是静下心来,发现别人的C:\Windows\SysWOW64里也有一个mfplat.dll,所以果断拷贝到自己电脑,然后按上面步骤直接成功运行。
至于为什么版本不对造成的找不到入口点,因为是ffmpeg的开发人员把前面版本的某些函数名给修改了,导致需要额外的mfplat.dll来帮助新版本的ffmpeg动态库链接。因为在链接xxx-57.dll版本时是不需要mfplat.dll都能运行成功的。
windows服务器运行ffmpeg报错,mfplat.dll模块已加载但找不到入口点dllregisterserver_第1张图片
在这里插入图片描述

6 mfplat.dll的32位和64位资源

你可能感兴趣的:(FFMPEG,windows,c++)