问题描述
intOpenComm(HANDLE*hCom,char*com_port)vc的调用如下:●——hCom:串口句柄●——com_port:串口文件名调用例程:charcomm[]="COM1";OpenComm(&h_Com,comm);if(h_Com!=INVALID_HANDLE_VALUE){AfxMessageBox("打开串口成功!");}else{AfxMessageBox("打开串口失败!");}//++====================================================请问vb如何申明调用,我这样申明调用出错PublicDeclareFunctionOpenCommLib"EPCDemoDll.dll"(ByRefhandAslong,ByValcomAsString)AsInteger调用:DimhandAsLongDimcomPortAsStringcomPort="COM1"OpenCommhand,comPort报错,错误号49请大侠指点下
解决方案
解决方案二:
ding
解决方案三:
zaiding
解决方案四:
试试在图形模式,你工程管理器引用看看。
解决方案五:
没用过,试试:PublicDeclareFunctionOpenCommLib"EPCDemoDll.dll"(ByRefhandAsInteger,ByValcomAsString)AsInteger
解决方案六:
谢谢,上面的方法不行。
解决方案七:
我也是使用不了这个函数,我的函数申明跟你一样PublicDeclareFunctionOpenCommLib"EPCDemoDll.dll"(hcomAsLong,ByValcommAsString)AsLong-------------------------------------------函数调用dimhcomaslongdimcommasstring*6comm="COM1"OpenCommhcom,comm调用错误显示“49”后来在百度又搜搜发现有的网友在PowerBilder调用也错误,估计说dll导出函数时候使用的不是__stdcall,我又在函数申明里面改了点PublicDeclareFunctionOpenCommLib"EPCDemoDll.dll"Alias"OpenCommA"(hcomAsLong,ByValcommAsString)AsLong结果还是实时错误“453”,郁闷了
解决方案八:
你用工具箱的SerialPort控件,直接编也快啊,别人编的DLL,不见得很合理和方便的,一般是能用就不错了,看你这个DLL像EPC周立功的主板WINCE系统吧,呵呵,这种系统上DLL是多,也能用,有本该厂的手册,告诉你怎么做文件头声明的,其实他的DLL你一个都可以不用,自己做也快哦
解决方案九:
一般为了很好的调用DLL,需要厂家说明用法的,或提供DLL源码,自己打开,基本琢磨下,就可以调用了,非托管的调用,有时需要涉及内存分配和指针配合来调用。
解决方案十:
C#和VBNET的DLL是指令集,很容易反汇编的,有专门软件,调用时也简单,添加到引用就可以使用了