- ベストアンサー
LoadLibraryについて
いつもお世話になっております。 現在、WindowsXP(SP2)、VisualBasic6.0(SP6)を使って開発中です。 他社が作成したソースを解析しているのですが、分からない事があったので教えてください。 hModule = LoadLibrary(strDLLFullPath) として、strDLLFullPathに指定されているDLLを呼び出しているのですが、VBでデバッグしていると、【返り値(hModule)=0】となっています。 ロードに成功すると、アドレス空間に割り振ったDLLのインスタンスハンドルが返って来る筈だから、【0】が帰って来たという事は、ロード出来てないという事ですよね? しかしこのソースをコンパイルして単体のアプリとして動かすと、きちんとハンドルを取得できるのです。 動作環境は同じなのに、なぜこのような違いが生じるのでしょうか? 何か御存知でしたら教えてください。 宜しくお願いします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
エラー番号(Err.LastDLLError)は確認しましたか? > hModule = LoadLibrary(strDLLFullPath) 「strDLLFullPath」の具体的な内容は? そのDLLって、別のDLLを使っていたりしませんか? だとすると、EXE/DLL/別のDLL/プロジェクトファイルの位置関係(各々どこのフォルダ)は?
その他の回答 (1)
- redfox63
- ベストアンサー率71% (1325/1856)
その読み込もうとしている DLLなどの DllMainで呼び出しもとのモジュールを判定しているのかもしれません DLLの利用を限定しているなど制限があるのではないでしょうか # 憶測ですけどDLLを開発に使うためには許可が要るなど... # 開発元または 提供元に確認なさってみてはいかがでしょう
お礼
ご回答、ありがとうございます。 使いたいDLLは、開発元からの許可は取っています。 実行アプリにすると使えるので、実行アプリとソースでは、LoadLibraryの動作が異なるのかと思いましたが、単に自分のミスで、動作環境の違いでした。 申し訳ありませんでした。
お礼
ご回答、ありがとうございます。 >そのDLLって、別のDLLを使っていたりしませんか? 御指摘の通り、別のDLLを呼んでいました。 別のDLLも指定したパスに置いたら、解決しました。 ありがとうございました。