Delphi7を使用しています。
XPでは正常ですが、Windows2000では、エラー「DLLが見つかりません
でした」が出ます。
少し詳しい説明:
dcc32 -CC AAA.pas
でコンソールプログラム AAA.exe を作成しました。
AAA.exe は、BBB.dll を呼び計算します。
XPで、BBB.dllをAAA.exeと同じフォルダにおき、AAA.exeを実行すると、
正常に動作します。ここまですんなりいきました。
ところが、Windows2000で同じことをすると、次のエラーが出ます。
「AAA.exe -DLLが見つかりません
ダイナミックリンク ライブラリ BBBが指定されたパス
(パス名が並ぶ)に見つかりませんでした。」
試しに、BBB.dllを別の指定されたパス
C:\WINNT\system32 などにも置きましたが結果は同じでした。
どのあたりに問題がありそうでしょうか。
情けない質問で申し訳ありません。
あくつ
BBB.dll がインポートしている DLL が Windows 2000 には
無いのでしょう。tdump で BBB.dll がインポートしている
DLL を調べてみてください。
Quoting tonbo_ik <tonb...@ybb.ne.jp>:
----------
(株)ブレーン 中村拓男
tdumpを知りませんでした。
次の手順で調べましたが、未解決です。
1.tdump.exe BBB.dll を実行しました。(オプションなしで)
○Importの内容です。(ファイル内の項目は省略します)
・Imports from advapi32.dll
・Imports from user32.dll
・Imports from kernel32.dll
○Importしている、advapi32.dll、user32.dll、kernel32.dllは、
Windows2000 PC内にありました。
○念のため、上記3つのDLLを、AAA.exe、BBB.dll のあるフォルダ
に置いて、AAA.exeを行ってみると、同じエラー
「DLLが見つかりません」が出ました。
2.参考のためtdump.exe polyroot.exe を実行しました。
○Importの内容です。
・Imports from advapi32.dll
・Imports from user32.dll
・Imports from kernel32.dll
・Imports from BBB
BBBでは、5項目上がっていますが、それらは、BBB.DLLの
Export項目に上がっていました。
ファイルレベルでは問題ないようです。
困りました。
あくつ
> 中村@ブレーンです。
>
> BBB.dll がインポートしている DLL が Windows 2000 には
> 無いのでしょう。tdump で BBB.dll がインポートしている
> DLL を調べてみてください。
>
> ---------------------------------------------------------------
|XPでは正常ですが、Windows2000では、エラー「DLLが見つかりません
|でした」が出ます。
LoadLibrary('BBB.dll')
と拡張子をつけておられますでしょうか?
Delphi では昔からつけるのがデフォだったので気がつきませんでしたが、
今 Vista で試してみると LoadLibrary('BBB') でも成功するみたいなので、
XP から変わったのかも知れません。
勘違いだったらすみません。(2000 で確認していませんので)
o(^^ )o--------⊆^U)┬┬~...
Terry
実験とご返事とありがとうございます。
LoadLibraryに相当する?externalで
external 'BBB' としていました。ここを
external 'BBB.dll' とすると、OKになりました。
あるサンプルプログラムがこうなっており、原因は他と
思い込んでいました・・・
解決しました。
寺田様、中村様、ありがとうございました。
あくつ