• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:DLL参照時に指定されたモジュールが見つかりません。(HRESULT からの例外 0x8007007E) が発生してしまう。)

DLL参照時に指定されたモジュールが見つかりません。

このQ&Aのポイント
  • C++プロジェクト(Windowsフォームアプリ)でのDLL参照は成功したが、クラスライブラリプロジェクトと連携させるとエラーが発生。
  • 開発環境はMicrosoft Visual Studio 2008。問題が発生しているDLLはUSBIODLLDemo.dll。
  • 解決策がわからず、エラーの原因と解決方法についてアドバイスを求めている。

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

  • ベストアンサー
  • redfox63
  • ベストアンサー率71% (1325/1856)
回答No.1

やるならば ソリューション名をつけて複数のプロジェクトをまとめたほうがいいように思います VC++/C#で新規にプロジェクト(ソリューション)を生成する際のダイアログの『ソリューションのディレクトリを作成』にチェックを入れて 『USBIODEMO』などといった具合にします その中に.NET用のクラスライブラリのプロジェクトを作成します こうすると USBIODEMO\Debug(または Release)に出来上がったDLLが生成されます 同じように テスト用のFormアプリをVCのプロジェクトで作成します コンパイル/リンクがうまくいけば 上記のフォルダに EXEが生成されます この状態でFormEXEのデバッグを行ってやれば 質問のようなエラーは回避できると思います C#の場合は 元の『USBIODLLDemo.dll』をC#のプロジェクトの『bin\debug(またはRelease)』にコピーしないといけないでしょう つまりは クラスライブラリのDLLは見つかったが 元の『USBIODLLDemo.dll』が見つからなかった という現象ではないかと思います アプリの参照はクラスライブラリーまでなのでクラスライブのDLLまではコピーしたりする面倒を見てくれます クラスライブラリが参照しているDLLまで面倒見てくれないためなのかもしれません DLLの検索順についてWebなどで検索してみましょう

mkmrsk
質問者

お礼

丁寧な御指南ありがとうございました。 事象を詳細に説明して頂いた事で非常に参考になりました。 お陰様でC++Winフォームのケース、C#Winフォームのケース共に解決致しました。 <↓解決詳細です↓> ・C++winフォームの場合、USBIODLLDemo.dllをソリューションの階層のDebugフォルダに追加する事で解決致しました。 ・C#winフォームの場合、御指南頂きました通り USBIODLLDemo.dll をC#プロジェクトのbin\Debugに追加する事で解決致しました。

関連するQ&A