2
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

LoadLibraryに失敗

Posted at

職場で起こったことです。
私たちはVisual Studio 2005を使ってExcelのアドインを開発しています。
今回の作業は32bitプロセスで動いているアドインを64bitプロセスに移植する作業でした。

このアドインは他社が作成したDLLをロードしていることが分かっていましたので、その会社に64bitプロセス用のDLLを作成したいただくように依頼しました。これは64bitプロセスから32bitプロセス用のDLLはロードできないと知ったからです。(kernel32.dllはロードできるみたいですが、なぜなんでしょうか?本当はロードできていない?)

しばらくして、64bitプロセス用のDLLが届き、LoadLibrary関数でこのDLLをロードしてみると戻り値が0となり、DLLのロードに失敗してしまいました。下記では、このロード対象DLLをHoo.dllとします。

Visual Studio 2005の出力をみると、ExcelのアドインからHoo.dllをロードしているのですが、すぐにアンロードするのです。そして、LoadLibrary関数の戻り値は0です。

このDLLだけをロードするプロジェクトを作成してみて、ようやく原因がわかりました。mfc110.dllが見つからないという旨のエラーメッセージが表示されたからです。

こいつを調べると、Visual Studio 2012のDLLらしいのです。つまり、Hoo.dllの開発環境にあったDLLが実行環境になかったため、ロードに失敗していたのです。

Visual Studio 2012 更新プログラム 3 の Visual C++ 再頒布可能パッケージをダウンロードして、インストールするとロードに成功しました。

以上です。

2
3
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?