WinCE6.0下DLL调用求助

时间:2022-10-21 20:13:24
手持机上的硬件驱动dll,里面都是操作的API接口函数,在WinCE 6.0下;
别人给的VC++写的测试程序调用都OK没问题,我用的是FreePascal的Lazarus开发就调用不了;

我在Lazarus下面程序编译正常,但无论使用静态包含调用,还是动态LoadLibrary调用都失败;静态调用的话窗体没显示,动态调用报错找不到dll文件Load失败;

静态:
const
  PAlib = 'PA200CDll.dll';
  procedure Scan_LED_ON();cdecl;external PAlib;
  procedure Scan_LED_OFF()cdecl;external PAlib;
  procedure BEE_ON(Time:Integer);cdecl;external PAlib;
  function Barcode_Read():Boolean;cdecl;external PAlib;
  function Barcode_Open():Boolean;cdecl;external PAlib;
  function Barcode_Close():Boolean;cdecl;external PAlib;
  function Get_Barcode_Data(Buffer:Pointer):Integer;cdecl;external PAlib; 

动态:
type
  TIntFunc=procedure(i:integer);cdecl;stdcall;
var
  Th:TLibHandle;
  Tf:TIntFunc;
  Tp:Pointer;
begin
  Th:=LoadLibrary('PA200CDll.dll'); {装载DLL,//'PA200CDll.'+SharedSuffix}
  if Th>0 then
    try
       Tp:=GetProcedureAddress(Th,PChar('BEE_ON'));
        if Tp<>nil then
           begin
             Tf:=TIntFunc(Tp);
             Tf(300);    {调用BEE_ON函数}
           end
        else
           ShowMessage('BEE_ON函数没有找到');
    finally
       FreeLibrary(Th); {释放DLL}
    end
  else
      ShowMessage('PA200CDll.dll没有找到');


核对了文件名,修改了绝对路径,改stdcall和cdecl方式,都不行,不知道是什么问题?求助各位!

7 个解决方案

#1


问题找到了,动态报错是Th>0改成Th<>0,

静态调用失败是有个procedure BEE_ON(Time:Integer);cdecl;external PAlib;函数名不对,试出来的。

谢谢大家。

#2


引用 1 楼  的回复:
问题找到了,动态报错是Th>0改成Th<>0,

静态调用失败是有个procedure BEE_ON(Time:Integer);cdecl;external PAlib;函数名不对,试出来的。

谢谢大家。


不错不错,顶一下

#3


有用,值得借鉴。

#4


该回复于2013-09-04 08:57:47被管理员删除

#5


学习下,加下积分。

#6


还有人用FreePascal开发wince程序,真少见。FreePascal弄出来的东西太大了吧。

#7


做 CE 这么久了,还第一次听说 FreePascal 这个东东

#1


问题找到了,动态报错是Th>0改成Th<>0,

静态调用失败是有个procedure BEE_ON(Time:Integer);cdecl;external PAlib;函数名不对,试出来的。

谢谢大家。

#2


引用 1 楼  的回复:
问题找到了,动态报错是Th>0改成Th<>0,

静态调用失败是有个procedure BEE_ON(Time:Integer);cdecl;external PAlib;函数名不对,试出来的。

谢谢大家。


不错不错,顶一下

#3


有用,值得借鉴。

#4


该回复于2013-09-04 08:57:47被管理员删除

#5


学习下,加下积分。

#6


还有人用FreePascal开发wince程序,真少见。FreePascal弄出来的东西太大了吧。

#7


做 CE 这么久了,还第一次听说 FreePascal 这个东东