必要なDLLがなくても起動させる方法は?

解決


よしの  2006-06-04 23:25:26  No: 22022  IP: 192.*.*.*

DLLを使って処理をするプログラムを書いていますが
このDLLが無い場合でも一応は起動できるようにしたいと思っています。

現在は以下のような宣言をしているのですが、
DLLが無いと起動時に警告が出て終わってしまいます。
何かよい回避方法はないでしょうか?

function TEST_CALC(value: DWORD): DWORD; stdcall; external 'test.dll';

環境はXPsp2 + Delphi6Personalです。

編集 削除
ひょっとして  2006-06-04 23:30:51  No: 22023  IP: 192.*.*.*

ゼロ・バイトのDLLファイルを作るだけではダメかなぁ?
例外をフックする方法は他の方に・・。

編集 削除
風来坊  2006-06-05 00:07:46  No: 22024  IP: 192.*.*.*

性的リンクではなく動的リンクで...
LoadLibrary, FreeLibrary, GetProcAddress で検索してみてください。
難しくはないですが、多少面倒です。

編集 削除
回避は〜  2006-06-05 00:09:08  No: 22025  IP: 192.*.*.*

動的リンク
LoadLibrary
GetProcAddress

編集 削除
半角文字だけじゃダメ?  2006-06-05 00:24:34  No: 22026  IP: 192.*.*.*

var
  TEST_CALC: function (value: DWORD): DWORD; stdcall;
  value: WORD;
  h: HINST;
begin
  h := LoadLibrary('test.dll');
  if h <> 0 then begin
    @TEST_CALC := GetProcAddress(h,'TEST_CALC');
    value := TEST_CALC(value);
    FreeLibrary(h);
  end;
end;

※半角文字だけだと受け付けてくれないのね。宣伝(アラシ)対策?

編集 削除
リンク  2006-06-05 01:44:34  No: 22027  IP: 192.*.*.*

こういった用途は動的リンクですね。
性的リンクはちゃんと相手に許可をとって行わないと訴えられるので注意してください。

編集 削除
よしの  2006-06-06 02:11:17  No: 22028  IP: 192.*.*.*

みなさん、ありがとうございます。
無事解決しました。

編集 削除