重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

 先日の質問(*)の続きですが、自分で自分の質問に補足出来ないのと状況が変わったので別質問にしました。
 (*)EXCEL2010から外部DLLをCall出来ない

状況
 MS社のサイトより評価版のWindows7とoffice2010をダウンロードし新規HDDにインストールして環境を作成した。
 新規作成環境のCドライブにtempフォルダを作る。

 WindowsXPとExcel2003では問題なく動いていたExcel用の外部DLLがc:\tempでは動かなかった。
(ここまでは前回の質問) 

調査結果
 Windows7とExcel2003でも同じ状況、同じエラーを起こす。つまり、問題はexcel2010ではなく、Windows7でした。
 「実行時エラー48 ファイルが見つかりませんC:\Temp\testDll.dll」というエラーメッセージですが、
C:\Temp\testDll.dll を物理的に削除してしまうとエラーメッセージは「実行時エラー53 ファイルが見つかりませんC:\Temp\testDll.dll」に変わります。つまり、testDll.dllの存在有無は分かっているが、「見つからない」と言っているようです。先の質問に頂いたアクセス権の問題のようです。

 Windows7+Excel2003でtestDll.dllを見つけられないと言っている環境でIntelのfortranコンパイラテスト版をインストールしてみました。すると、エラーなく正常に動くのです。
 つまり、フォルダとか、ファイルのアクセス権とは関係ないところで、コンパイラをインストールするだけで実行時エラー48は解消しました。

ここからが今回の質問
 コンパイラをインストールするだけで変わる様なものは何でしょうか?
 コンパイラを入れなくてもエラー48を出さない様にする為に調べるべき項目は何でしょうか?

A 回答 (2件)

○コンパイラをインストールするだけで変わる様なものは何でしょうか?


 ⇒ testDll.dll 内部で別の dll 等をさらに参照している場合、その dll がコンパイラのインストールで環境に導入されて、それで動くようになることが考えられます。

○コンパイラを入れなくてもエラー48を出さない様にする為に調べるべき項目は何でしょうか?
 ⇒ testDll.dll 内部で参照されている dll を別途インストールすれば良いでしょう。通常、このようなモノは『ランタイム』として提供されているものです。コンパイラの提供元に確認して、ランタイムがないか確認してください。
    • good
    • 0
この回答へのお礼

 ラインタイムライブラリーをdllに埋め込む方法が提供元に確認して分かりました。
 提供元になんと言って質問すれば解決しそうなのかも分からない五里夢中の状態から、皆様の適切な助言で質問して解決する所までたどり着きました。
 本当にありがとうございました。

 ちなみに色々とテストして分かった事はデフォルトのオプションでDLLを作成するとランタイムライブラリ全く埋め込まないものが作成され、オプションを変更すれば、適切なライブラリを埋め込んだものが作成されると言うことでした。
 ライブラリが埋め込まれていないものはWindowsバージョンによらず駄目でした。

お礼日時:2011/01/17 16:12

「Dependency Walker」というDLLの参照関係を調べてくれるツールがあります。


これを使って必要としているDLLを調べられてはいかがでしょうか。
    • good
    • 0
この回答へのお礼

 ありがとうございます。
 調べてみましたが良く分からない結果になりました。でも今後このツールを良く使いこなしたいと思います。
 情報ありがとうございます。

お礼日時:2011/01/17 16:06

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!