Delphi 7 で DLL を理解するのに苦労しています。2 つの問題があります。
1) プロシージャは整数パラメータを取りますが、dll は私が渡した値とは異なる値を受け取ります。
2) dll を呼び出したアプリケーションは、関数の完了後にアクセス違反でクラッシュします。
これが私のdllコードです:
library apmDLL;
uses
Classes, Messages, Windows, Dialogs, sysutils ;
const
WM_MY_MESSAGE = WM_USER + 1;
procedure sendtoACRPM (functionKey : integer); stdcall;
begin
showmessage('You sent - '+inttostr(functionKey));
showmessage('Finished Now');
end;
exports sendtoACRPM;
end.
したがって、以下のコードでこれを呼び出すと、次のようになります。
「送信中 - 1」
「送信しました - 1636532」
「ただいま終了」
次に、呼び出し元のアプリケーションがアクセス違反でクラッシュします。
呼び出し元のアプリケーションは次のようになります。
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, shlobj, shellapi;
const
WM_MY_MESSAGE = WM_USER + 1;
type
TForm1 = class(TForm)
Edit1: TEdit;
Button2: TButton;
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
procedure sendtoACRPM (functionKey : integer) ; external 'apmDLL.dll';
implementation
{$R *.dfm}
procedure TForm1.Button2Click(Sender: TObject);
var
myInt: integer;
begin
myInt := strtoint(edit1.text);
showmessage('Sending - ' + inttostr(myInt));
sendtoACRPM(myInt);
end;
end.
ここで私が間違っていることはありますか?