• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Windows7で自作dllを呼び出す方法)

Windows7で自作dllを呼び出す方法

このQ&Aのポイント
  • Windows7で自作dllを呼び出す方法について調査しました。WindowsXPとExcel2003では問題なく動いていたExcel用の外部DLLがWindows7では動かないことが判明しました。実行時エラー48が発生し、ファイルが見つからないというエラーメッセージが表示されます。そのため、フォルダやファイルのアクセス権だけではなく、コンパイラのインストールも関連している可能性があります。
  • 調査結果からわかったことは、Windows7とExcel2003でも同じ状況で同じエラーが発生することです。これは、問題がExcel2010ではなくWindows7にあることを示しています。実行時エラー48が発生する原因は、物理的なファイルの存在有無ではなく、ファイルが見つからないと言われていることです。
  • コンパイラをインストールするだけで実行時エラー48が解消することがわかりました。これは、フォルダやファイルのアクセス権に関係なく、コンパイラのインストールによって解決することを意味しています。したがって、エラー48を回避するためには、コンパイラのインストールが必要です。

質問者が選んだベストアンサー

  • ベストアンサー
noname#212058
noname#212058
回答No.1

○コンパイラをインストールするだけで変わる様なものは何でしょうか?  ⇒ testDll.dll 内部で別の dll 等をさらに参照している場合、その dll がコンパイラのインストールで環境に導入されて、それで動くようになることが考えられます。 ○コンパイラを入れなくてもエラー48を出さない様にする為に調べるべき項目は何でしょうか?  ⇒ testDll.dll 内部で参照されている dll を別途インストールすれば良いでしょう。通常、このようなモノは『ランタイム』として提供されているものです。コンパイラの提供元に確認して、ランタイムがないか確認してください。

ara1300
質問者

お礼

 ラインタイムライブラリーをdllに埋め込む方法が提供元に確認して分かりました。  提供元になんと言って質問すれば解決しそうなのかも分からない五里夢中の状態から、皆様の適切な助言で質問して解決する所までたどり着きました。  本当にありがとうございました。  ちなみに色々とテストして分かった事はデフォルトのオプションでDLLを作成するとランタイムライブラリ全く埋め込まないものが作成され、オプションを変更すれば、適切なライブラリを埋め込んだものが作成されると言うことでした。  ライブラリが埋め込まれていないものはWindowsバージョンによらず駄目でした。

その他の回答 (1)

回答No.2

「Dependency Walker」というDLLの参照関係を調べてくれるツールがあります。 これを使って必要としているDLLを調べられてはいかがでしょうか。

ara1300
質問者

お礼

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