5

LoadLibrary 関数からエラー コード 182 が返されます。MSDN から:

ERROR_INVALID_ORDINAL: "オペレーティング システムは %1 を実行できません"

このエラーが何であるかをよりよく説明している人はいますか?

4

2 に答える 2

5

非常にあいまいなエラー。ただし、「序数」という用語は、DLL と強く関連しています。DLL には、インポートされた関数のリストだけでなく、エクスポートされた関数のリストも含まれています。依存関係がある他の DLL。通常、これらのエクスポートとインポートには名前がありますが、必須ではありません。それらには常に数字があり、その数字は「序数」です。

これを診断するには、SDK の Dumpbin.exe ツールを使用します。これを最初に実行します。

Dumpbin /exports Blah.dll

エクスポートのリストを見てください。名前だけでなく、序数も表示されます。すべてチェックアウトしたら、実行します

Dumpbin /imports Blah.dll

依存関係のリストを取得します。この DLL が持っていない番号によって、別の DLL の関数に依存している可能性は高いです。とにかくそのような何か。DependencyWalker ツールを使用すると、おそらく手間を軽減できます。最初のステップが失敗した場合、DLL のビルド時に何かが大幅に間違っています。2 番目のステップが失敗した場合は、何らかの DLL Hell 問題が発生している可能性があります。

于 2010-08-16T22:09:27.587 に答える
0

このエラーは LoadLibrary から発生していると確信していますか? Windows DLL を使用すると、名前と序数値でエクスポートを指定できます。つまり、各機能は番号で識別できます。GetProcAddress を呼び出して無効な序数を指定すると、このエラーが発生します。

私の最善の推測は、ロードしている DLL がその DllMain で GetProcAddress を呼び出し、無効な序数を指定していることです。これにより失敗し、GetLastError を呼び出すと、発生した最後のエラーであるため、ERROR_INVALID_ORDINAL が返されます。

于 2010-08-16T21:14:12.780 に答える