LoadLibraryについて
VB6 WinXPで開発中。
コード内に。
hDLL = LoadLibrary("xxxx.dll")
というように、DllはSystem32、Systemの両方のフォルダに格納して
プログラムを走らせると。
System(16bit)フォルダのほうに格納したDllは、「ファイルが見つかりません」と
出てしまいます。
http://msdn.microsoft.com/ja-jp/library/cc429241.aspx
上記URLには、「32 ビットコードから 16 ビット DLL を直接呼び出そうとした場合も、
LoadLibrary は失敗します。」と記載してあります。
上記コードは、Win95で動作は可能ですが、XPの場合は別な関数を使用しなければならないのでしょうか?
XPで何をしたいのでしょうか?
XPで16ビットコードを実行したい?
Win95/98では、私もやったことありますし、サンクDLLを作成して
32ビット・16ビットを行き来するようなプログラムも作ったこと
ありますが、XPでは無理かと・・・
※ Win2000以降で16ビットコードを実行させることやってません
ので、情報は持ってません・・・あしからず。
※ サンクDLL作成するには、VC 1.5 だったかが必要になったかと
VC 4.0に添付されていたはず。(一応まだ保有してます)
以上。
追伸
VB6 は、32ビット実行形式用しか作成できませんので、仮に
16ビットをロードできるAPIを呼べても、実際にコールする
ことは不可能・・・
VB4.0 なら16ビット実行形式を出力できますが、わざわざに
使うんですか?・・・
以上。
16/32bit は別としてメッセージとして「ファイルが見つかりません」が出るのは
単純にパスが通っていないからじゃないかな。
LoadLibraryの検索対象は・・・
そのAPIを呼び出したプログラムのカレントと環境変数のPathのディレクトリ
です。
よって、C:\Windows\Systemは検索パスに入ってませんネ!
しかしながら、LoadLibraryでは16ビットDLLのロードには失敗するとありま
すが、GODさんが云われる通り『ファイルが見つかりません』となるのは、
まず検索対象パスにロードしたいDLLが無い。と云うのが一番。
次に16ビットDLLをロードしたいと言う部分でしょう。
以上。
書き込み読ませて頂きました。LoadLibraryはビギナーにとって難しいもので
すね。
小生PCの(再)起動時に必ずRegSvr32のタイトルでLoadLibrary(文字化け)に
失敗しました。指定されたモジュールが見つかりません。と出ます。この近辺
でOEメールのリンクをクリックするとフリーズしIEへ飛ばないトラブルと関連
あるように思うのですが。
ない知恵絞り調べてトライしておりますが、エラーの出現とフリーズが収まり
ません。何とかご助力頂けませんでしょうか。
宜しくお願い致します。
尚OSはWin XP HE SP3,ウィルスソフトはNorton360で光回線&無線LAN接続
です。
> 小生PCの(再)起動時に必ずRegSvr32のタイトルでLoadLibrary(文字化け)に
> 失敗しました。指定されたモジュールが見つかりません。と出ます。この近辺
> でOEメールのリンクをクリックするとフリーズしIEへ飛ばないトラブルと関連
> あるように思うのですが。
OS の再インストール、あるいは PC のリカバリをお勧めします。
> ない知恵絞り調べてトライしておりますが、エラーの出現とフリーズが収まり
> ません。何とかご助力頂けませんでしょうか。
すでに考えられる問題点は挙げられていますよね?
最も妥当な解決策は「DLL を System32 に入れる」です。実際それで「ファイルが見つからない」エラーは出なくなるんでしょう?
// それで他のエラーが出るならそれはまた別の問題です。