ffmpegを実行しているWindowsサーバーがエラーを報告し、mfplat.dllモジュールがロードされましたが、エントリポイントdllregisterserverが見つかりません

ffmpegを実行しているWindowsサーバーがエラーを報告しました-mfplat.dllモジュールはロードされましたが、エントリポイントdllregisterserverが見つかりませんでした

1
最初に、対応するmfplat.dllバージョンを見つけます。私は、他の人のwin7 + 64ビットシステムのmfplat.dllをC:\ Windows \ SysWOW64 \にあるwin7に対応するC:\ Windows \ SysWOW64 \ディレクトリにコピーします。
注:
コンピューターのC:\ Windows \ System32 \ではなくC:\ Windows \ SysWOW64 \にコピーします。

2
C:\ Windows \ System32 \ディレクトリでcmdコマンドを見つけ、右クリックして管理者として開き(必須)、C:\ Windows \ SysWOW64 \ディレクトリにcdします。注:cd到该目录下是因为需要以该目录下的regsvr32.exe注册。
つまり、次のコマンドです。

cd C:\Windows\SysWOW64

3最後に、次のコマンドを実行してdllを登録します。

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

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

4
mfplat.dllをC:\ Windows \ System32 \、C:\ Windows \ SysWOW64 \、program.exeディレクトリにそれぞれコピーします。プログラムを実行して実行します。

5上記の理由を分析し
ます。dllはffmpeg関連関数の動的ライブラリファイルですが、なぜ上記のエラーが発生するのですか?テストの結果、ffmpegバージョンであることが判明しました。動的バージョンのxxx-57.dllを使用すると、正常に実行できます。
そして、xxx​​-58.dll(57より古いバージョン)を使用すると、コンピューターにmfplat.dllがないように見えます。コピーをコピーしてください...そして、エントリポイントを見つけることができなくなります(この記事の問題)。間違ったバージョンがテストされたため、C:\ Windows \ System32 \ディレクトリがコピーされたため。そこで、ダイナミックライブラリのバージョンを変更するという面倒な点も考えましたが、それでもあまりやりませんでした。
最後に、落ち着いて、他の誰かのC:\ Windows \ SysWOW64にもmfplat.dllがあることがわかったので、それを自分のコンピューターに断固としてコピーし、上記の手順に従って直接実行しました。
バージョンが間違っているためにエントリポイントが見つからない理由は、ffmpegの開発者が以前のバージョンの一部の関数名を変更したため、新しいバージョンのffmpeg動的ライブラリリンクを支援するために追加のmfplat.dllが必要になったためです。xxx-57.dllバージョンをリンクする場合、mfplat.dllを正常に実行する必要がないためです。
ここに写真の説明を挿入
ここに写真の説明を挿入

おすすめ

転載: blog.csdn.net/weixin_44517656/article/details/109034352