Я знаю несколько оснований Delphi (на самом деле я использовал его в течение нескольких лет) ...Правильно вызывать внешнюю dll в Delphi?
Я нахожусь на стене с DLL (никогда не играю с этим).
Рассмотрим следующий пример:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
Type FT_Result = Integer;
type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
FT_HANDLE : DWord = 0;
implementation
{$R *.dfm}
function I2C_GetNumChannels(numChannels: dword):FT_Result; stdcall; external 'libmpsse.dll' name 'I2C_GetNumChannels';
function I2C_OpenChannel(index:dword;handle:pointer):FT_Result; stdcall; external 'libmpsse.dll' name 'I2C_OpenChannel';
procedure TForm1.Button1Click(Sender: TObject);
var
numofchannels:dword;
begin
i2c_getnumchannels(numofchannels);
showmessage(inttostr(numofchannels));
end;
end.
Мне нужно взаимодействовать с libmpsse.dll от FTDI для доступа к шине I2C устройства к порту USB.
Когда я звоню в функцию I2C_GetNumChannels, я получаю тонны AccessViolation ...
Я просто хочу знать, что не так с функцией dll?
Также I2C_GetNumChannels предполагается возвращает 2 значения ...
Из официального руководства API здесь ->http://www.ftdichip.com/Support/Documents/AppNotes/AN_177_User_Guide_For_LibMPSSE-I2C.pdf
Большое спасибо!
С уважением
'numChannels' является указателем на' DWORD', а не 'DWORD'. Объявление вашей функции неверно. –
Я скорректировал код соответственно ... спасибо! – ELCouz