读书人

十豆三大哥关于VFP调用C++写的DLL的

发布时间: 2013-03-06 16:20:31 作者: rapoo

求助十豆三大哥,关于VFP调用C++写的DLL的问题续
根据你提供的方法,的确有几个函数能调用成功,可有的却不成功,还请多多指点。
有这么个函数

LinkConnect

声明: long LinkConnect ();

说明: 连接控制卡

参数: 无

返回值: 返回0连接成功

备注: 必须在OpenPort函数调用成功后才能使用

示例:

VB:

Private Sub CConnect_Click()
Dim Res As Long
Res = LinkConnect ()
MsgBox Res
End Sub

VC:

private bool Link()
{
char* ip="192.168.0.100";
if(OpenPort(ip,1001)==0)
{
if(LinkConnect()==0)
{
res=true;
this->SetTimer(m_Timer,100,0);
m_Linked=true;
}
}
if(res==false)
{
MessageBox("对不起,连接控制卡失败!","提示");
m_Linked=false;
}
return res;
}
------------------
链接控制卡需要先打开端口
我写的代码如下;能打开端口,却不能链接控制卡。

Declare Long OpenPort In V6LinkDll.dll String IP
If OpenPort("'192.168.0.200',1001")=0
Messagebox("打开控制卡端口",64,"信息提示")

Else
Messagebox("端口打开失败!",48,"信息提示")

ENDIF

Declare LONG LinkConnect In V6LinkDll.dll

IF LinkConnect() = 0
Messagebox("链接成功",64,"信息提示")

Else
Messagebox("链接失败!!!!.",48,"信息提示")

ENDIF
-------------------------- c++ dll
[解决办法]
OpenPort函数应该这么用吧

Declare Integer OpenPort In V6LinkDll String @,Integer
If OpenPort('192.168.0.200',1001) == 0
Messagebox('打开控制卡端口',64,'信息提示')
Else
Messagebox('端口打开失败',48,'信息提示')
Return
Endif

[解决办法]
我写一个简单例子,你看一下结果就知道了
Clear
lnA1=8
lnB1=9
?MyTest(lnA1,lnB1),lnA1,lnB1
?MyTest(@lnA1,lnB1),lnA1,lnB1

Function MyTest
Lparameters tnA1,tnB1
tnA1=tnA1*tnB1
Endfunc

读书人网 >VFP

热点推荐