首页
社区
课程
招聘
无lib无.h VC调用DLL出错 有DEHPHI源码
发表于: 2013-1-24 19:46 4244

无lib无.h VC调用DLL出错 有DEHPHI源码

2013-1-24 19:46
4244
我是新手,调用试了大概半天了一直报错。
DEHPHI源码是这样的
 
ZK_RFID106_DLLName = 'ZK_RFID106.dll';
Function OpenComPort(Port : LongInt;var ComAdr : byte;Baud:byte; var frmcomportindex: longint): LongInt; stdcall; external ZK_RFID106_DLLName ;

openresult := AutoOpenComPort(port,fComAdr,fBaud,frmcomportindex);


文档里这样说的
应用:
long  WINAPI AutoOpenComPort(long Port, unsigned char *ComAdr, unsigned char Baud ,long FrmHandle);

我百度了一下动态调用这样试了不行.求帮助..
typedef long   (WINAPI *MessageBoxAT)
(
 long Port, 
 unsigned char *ComAdr, 
 unsigned char Baud ,
 long FrmHandle
 );

long Port1=9;
BYTE ComAddr1=0X00;
long FrmHandle1;
MessageBoxAT pfMessageBoxA=(MessageBoxAT )GetProcAddress(hModule,"AutoOpenComPort");
long a=(pfMessageBoxA)(9,ComAddr1,5,FrmHandle1);


DLL文件也上传了...

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

上传的附件:
收藏
免费 0
支持
分享
最新回复 (3)
雪    币: 952
活跃值: (1931)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
调用约定不对。。
2013-1-24 20:49
0
雪    币: 517
活跃值: (35)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
3
VC怎么使用不会,但VB使用完全没问题。注意,你说的是动态调用。VB代码如下,仅作参考:

Private Declare Function LoadLibrary Lib "kernel32" Alias "LoadLibraryA" (ByVal lpLibFileName As String) As Long
Private Declare Function GetProcAddress Lib "kernel32" (ByVal hModule As Long, ByVal lpProcName As String) As Long


Private Sub Form_Load()
Dim ll As Long, GP As Long

ll = LoadLibrary(App.Path & "\ZK_RFID106.dll")
GP = GetProcAddress(ll, "AutoOpenComPort")
End Sub
2013-1-24 21:52
0
雪    币: 341
活跃值: (143)
能力值: ( LV7,RANK:110 )
在线值:
发帖
回帖
粉丝
4
谢谢。。你真好人啊。。上次好像我用哪个号求助了1个问题也是你回答的..
我知道什么问题了。他妹的谁写的SDK文档!调用方法给错了
vc---- long  WINAPI AutoOpenComPort(long Port, unsigned char *ComAdr, unsigned char Baud ,long FrmHandle);

我再看了下c#开发文档
Function int StaticClassReaderB.AutoOpenComPort(int* Port, unsigned char *ComAdr, unsigned char * Baud ,int* FrmHandle);

应该传送指针类型才可以。怪不得一直报错
2013-1-25 09:24
0
游客
登录 | 注册 方可回帖
返回
//