2011-02-10 10 views

答えて

12

あなたのdll(またはそれがインポートするdll)は別のdllからのインポートを持っています(bad.dll)。 DependencyWalkerがbad.dllをスキャンすると、必要な機能がエクスポートされません。この欠落したエクスポートは、dllのインポートリストに赤色(または一部)のラベルが付けられます。

  • ビューUndecorate C++の関数はあなたに役に立つかもしれません。
+0

いくつかの外部DLLに依存するEXEを実行しようとすると、この問題が発生します。これは実行可能ファイルが常に実行されるのを妨げる問題ですか?たとえば、これらのエクスポートされていない関数が呼び出されたときにエラーが発生する可能性があります。 – Carrotman42

+2

ほとんどの場合、はい。すべてのインポートはロード時に解決されます。ただし、インポートによっては「遅延ロード」とマークすることもできます(これらはDependencyWalkerでhour glassアイコン(またはその他のもの)で表示されます)。これらのインポートは、アプリケーションが実際に呼び出すまで、Windowsのローダーによって解決されません。私はOpenGL/DirectX DLLをロードするアプリケーションを、ユーザが使用するAPIを選択した後でのみ出荷するためにこれを使用しました。 – bobbogo

+0

この回答は正式に回答とは決して決してされませんでした。なぜC++関数を宣言しないと便利なのでしょうか?あなたはそれが何をすべきかを言わなかった。 – shawn1874

関連する問題