2016-09-13 20 views
1

私は、古い顧客の.dllのAPIを使用するC++の.dllラッパーを作成しました。これはVBで書かれたプログラムで使用されます。それはすべて正常に動作しますが、何らかの理由でマシンによっては、すべてのDLLが.EXEスタートアップパスに入っていても "DLLが見つかりませんでした"(0x80070035)ということが分かりません。それは私のマシンで動作し、他のマシンでも動作しますが、さらに別のマシンではWin7 x64を実行していても例外が発生します。.EXEのパスにDLLが見つかりません

私のDLLをコピーするinot System32は問題を解決しません。正直なところ、アイデアはありません。

ありがとうございます!

+1

は、EXEと同じ場所にあるDLLですか? exeをどのように実行しますか?不足しているDLLの名前がありますか? –

+0

はい2つのDLL(私のラッパー+クライアント)は、私のEXEとまったく同じフォルダにあります。私はEXEを実行し、管理者権限で試してみましたが、問題は変わっていませんでした。欠落しているDLLは私自身の書かれたラッパーDLLです。すべてのシステムDLLが正しくロードされています。 – afi70

+1

ERROR_BAD_NETPATH、 "ネットワークパスが見つかりませんでした"です。不安定で信頼性の低いネットワークから身を守ることは不可能です。ユーザーのITスタッフはそれを修正する必要があります。エラーの意味を教えてください。彼らにとって最も簡単な回避策は、アプリケーションをローカルに展開し、ファイルをC:ドライブにコピーすることです。 –

答えて

2

見つからないDLLは、 DLLではなく、リンク先のDLLです。 depends.exe(*)のコピーを実行し、DLLをそのDLLにロードし、リンク先のDLLを確認します。驚くほど大きな数字があり、問題のある顧客サイトにはそのうちの1つが欠落しています。

(楽しいだけに追加する、それが第三DLLを必要とする第二DLLへのあなたのDLLのリンクているかもしれません - そしてそれが欠落していること第三 DLLです。)

*:あなたが持っていますはのコピーを持っていますか?これは、あらゆる種類の問題をデバッグするために絶対に不可欠なツールです。

+0

Hmm。私はこの答えが間違っていると思います.Hans Passantは、コメントに0x80070035はネットワーキングの問題であり、単純な "File not Found"ではないことを指摘しています。私は答えを残しておきます。なぜなら、それが答えではないとしても、他人を助けるかもしれないからです。 –

+0

とにかく、アイデアをありがとう、私はそれが間違っているかどうか分からない、私は同様にそれを試みた。残念ながら、DLLは後で動的にロードされるので、Dependsはそれらを見つけることができません。 – afi70

+0

@ afi70:いいえ、間違いなく正しいツールです。動的にロードされるDLLも処理できます。しかし、これは、Depends内から実際に実行ファイルを実行する必要があることを意味します(明らかに、ロードされたDLLはプログラムの入力に依存するため)。 – MSalters

関連する問題