« DLLを読み込めないという問題(2) | トップページ | DLLを読み込めないという問題(解決) »

2010年9月28日 (火)

DLLを読み込めないという問題(3)

さらに続きです。ちょっとだけ進展がありました。

まず、UrgLibDll.dllがReleaseモードでなぜうまく動かなかったのか解明できました。それは、Releaseモードのリンカの入力設定で、モジュール定義ファイルが空欄になっていたことが原因でした。Debugモードではちゃんとモジュール定義ファイルを指定していたのにReleaseモードでは指定していなかった。だから、ReleaseモードでビルドしてできたDLLは、公開すべき関数をExportできていなかった、というわけです。

上記の修正で作りなおしたUrgLibDll.dllを制御用PC上にもっていき、Dependency Walkerで依存関係を洗ってみたところ、また別の問題を見つけました。それは、制御用PCにVisual C++ 2005再配布可能パッケージをインストールしたはずなのに、MSVCR80.DLLが見つからないという問題です。今思えば、インストールが始まる感じはあったのに完了したという通知がないままダイアログボックスが消えてしまっていたので、インストールがうまくいっていなかったようです。そこで、こんどは再配布可能パッケージ(SP1)をインストールしてみました。はい、今度はインストールが終わった後にPCの再起動を求めてきました。おそらくインストールできたのだと思います。

制御用PCを再起動したのち、Depedency WalkerでUrgLibDll.dllの依存関係を解析しなおしてみたところ、不足しているDLLからMSVCR80.DLLが消えました。

これで解決できていることを願って、新しいUrgLibDll.dllを制御プログラムのディレクトリに入れてからプログラムを起動してみたところ、今まで出ていた例外がでなくなりました。そこから先は未確認ですが、とりあえず一歩前進です。(EFSADU.DLL、IESHIMS.DLL、WER.DLLは無くても動きそうですね。)

« DLLを読み込めないという問題(2) | トップページ | DLLを読み込めないという問題(解決) »

コメント

コメントを書く

コメントは記事投稿者が公開するまで表示されません。

(ウェブ上には掲載しません)

トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/167990/49582625

この記事へのトラックバック一覧です: DLLを読み込めないという問題(3):

« DLLを読み込めないという問題(2) | トップページ | DLLを読み込めないという問題(解決) »

最近の写真