大神帮忙将C的dll函数接口转delphi
数据结构
struct GetScanDataResult
{
int errorCode;
char message[128];
char data[256];
char reserved[512 - 388];
};
接口定义
int __stdcall GetScanData(GetScanDataResult* result);
接口获取方法
typedef int (__stdcall *GetScanDataFunc_t)(GetScanDataResult*);
// 获 取 接 口 指 针 示 例 :
// HINSTANCE hDllInst = LoadLibraryA("WangShouYinDll.dll");
// GetScanDataFunc_t getScanDataFunc = (GetScanDataFunc_t)GetProcAddress(hDllInst, "GetScanData");
-----------------------------------------------------------------------------------------------------
我的delphi代码
unit Unit1;
interface
uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants,
System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
Edit1: TEdit;
Button2: TButton;
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
type
PGetScanDataResult = ^GetScanDataResult;
GetScanDataResult = record
errorCode: integer;
message: array [1 .. 128] of Char;
data: array [1 .. 256] of Char;
reserved: array [1 .. 124] of Char;
end;
function GetScanData(result: PGetScanDataResult): integer; stdcall; external 'WangShouYinDll.dll';
implementation
{$R *.dfm}
procedure TForm1.Button2Click(Sender: TObject);
type
PVFN = Function(result: PGetScanDataResult): integer;
var
fn: PVFN;
hDllInst: Thandle;
Tp: TFarProc;
gsdr: PGetScanDataResult;
begin
try
new(gsdr);
hDllInst := LoadLibrary('WangShouYinDll.dll');
Tp := GetProcAddress(hDllInst, 'GetScanData');
fn := PVFN(Tp);
fn(gsdr);
FreeLibrary(hDllInst);
except
on E: Exception do
end;
end;
end.
调用没问题,但一直报地址错误。感谢哪位大神帮帮忙。
struct GetScanDataResult
{
int errorCode;
char message[128];
char data[256];
char reserved[512 - 388];
};
接口定义
int __stdcall GetScanData(GetScanDataResult* result);
接口获取方法
typedef int (__stdcall *GetScanDataFunc_t)(GetScanDataResult*);
// 获 取 接 口 指 针 示 例 :
// HINSTANCE hDllInst = LoadLibraryA("WangShouYinDll.dll");
// GetScanDataFunc_t getScanDataFunc = (GetScanDataFunc_t)GetProcAddress(hDllInst, "GetScanData");
-----------------------------------------------------------------------------------------------------
我的delphi代码
unit Unit1;
interface
uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants,
System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
Edit1: TEdit;
Button2: TButton;
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
type
PGetScanDataResult = ^GetScanDataResult;
GetScanDataResult = record
errorCode: integer;
message: array [1 .. 128] of Char;
data: array [1 .. 256] of Char;
reserved: array [1 .. 124] of Char;
end;
function GetScanData(result: PGetScanDataResult): integer; stdcall; external 'WangShouYinDll.dll';
implementation
{$R *.dfm}
procedure TForm1.Button2Click(Sender: TObject);
type
PVFN = Function(result: PGetScanDataResult): integer;
var
fn: PVFN;
hDllInst: Thandle;
Tp: TFarProc;
gsdr: PGetScanDataResult;
begin
try
new(gsdr);
hDllInst := LoadLibrary('WangShouYinDll.dll');
Tp := GetProcAddress(hDllInst, 'GetScanData');
fn := PVFN(Tp);
fn(gsdr);
FreeLibrary(hDllInst);
except
on E: Exception do
end;
end;
end.
调用没问题,但一直报地址错误。感谢哪位大神帮帮忙。
...全文
相关推荐
c 头转 pas 单元
c 头文件转delphi 的pas 单元 工具 。
汉字转拼音
通过delphi开放的Dll文件,具体功能为将edit中的汉字,自动转换成拼音,或者拼音首字母,例如:中国解放军,将转换成:ZGJFJ。因编译成dll,所以可以被其他开放语言直接调用。
Delphi源码实现C++代码转delphi代码..rar
Delphi源码实现C++代码转delphi代码..rar
基于开源PdfiumLib实现PDF转图片
基于开源PdfiumLib修改支持 Delphi 10.4.2 VCL,实现pdf转图片
GBK与BIG5的转换工具DLL
一个通过查表方式完成转换的DLL,支持COM和API两种方式调用.内附Delphi和VB的Demo.


语言基础/算法/系统设计
