使用vs调用DLL在运行时调用的方法,使用delph调用dll

运行时调用:

1,将*.lib放在和32位debug,release和x64相同的文件夹下,将*.dll放在对应的debug或者release文件夹下;

2,在调用的文件中编写:在声明处编写  typedef void (*ceshi)(int *sig, int data_len, int *i_dwt_out);   其中的ceshi 可以是任何名字,自己定义,但是参数和要使用的函数的参数相同;

3,在调用处编写:

HMODULE hDll = LoadLibrary(L"FilterDLL.dll");
ceshi segments_get_decompose_signal_int = (ceshi)GetProcAddress(hDll, "segments_get_decompose_signal_int");  (这里的ceshi和声明处一致,后面的函数名字是你在dll中定义的函数的名字)
segments_get_decompose_signal_int(sig, data_len, i_dwt_out); (这里就使用你要用的函数)
FreeLibrary(hDll);  (释放句柄)


加载时调用:

1,使用加载时调用是,要在编译和链接应用程序是提供头文件和导入库文件(.lib),当这样做的时候,链接器将向系统提供加载DLL所需的信息,并在加载时解析导出dll函数的位置。

2,#pragma comment(lib,"..\\*.lib");

extern "C"  _declspec(dllimport)  需要的函数;

之后就直接调用就可以了。




二、使用delphi调用DLL,

  1,正常的步骤生成DLL在使用delphi的时候会产生错误,解决的办法是:

        右键添加文件def,和编写源文件的方式相同,创建完成后再其中的内容是:

LIBRARY FilterDLL(这是工程的名字)
EXPORTS
segments_get_decompose_signal_int @ 1(这是对外的接口,其中的编号是声明这个函数是第几个调用的函数)

    

2,使用delphi调用dll的时候会显示INvalid floating point operation 的错误,出现这种原因就是在dll中有四舍五入的操作,要在delphi中编写响应的代码,这在网页中自己查找(本人不写delphi)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

野狼位位

给点辛苦费0.1元

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值