vb掉用C些的SOCKET通信DLL
先贴C中函数声明代码
extern "C" int PASCAL EXPORT Commit(
char * serverAddr, //服务器IP地址 in
int serverPort, //服务器端口号 in
char * sndBuf, //发送缓冲区 in
int sndDataLen, //发送缓冲区中数据的长度 in
char * rcvBuf, //接收缓冲区 out
int rcvBufLen, //接收缓冲区的大小 in
LPINT rcvDataLen, //接收缓冲区中数据的长度 out
int conTimeout = 5, //连接超时时间 秒 in
int sndTimeout = 5, //发送超时时间 秒 in
int rcvTimeout = 10 //接收超时时间 秒 in
)
下面是vb中的声明代码
Private Declare Function Commit Lib "mmsCrypto.dll" ( _
ByVal serverAddr As String, _
ByVal serverPort As Integer, _
ByRef sndBuf As Byte, _
ByVal sndDataLen As Integer, _
ByRef rcvBuf As Byte, _
ByVal RcvBufLen As Integer, _
ByRef rcvDataLen As Integer, _
Optional ByVal conTimeout As Integer = 5, _
Optional ByVal sndTimeout As Integer = 5, _
Optional ByVal rcvTimeout As Integer = 15 _
) As Integervb中定义各个变量:
ip,port是常量
Dim SndData() As Byte
Dim RcvData() As Byte
Dim sndDataLen As Integer
Dim RcvBufLen As Integer
Dim rcvDataLen As Integer奇怪现象:
当我将sndDataLen,RcvBufLen(即2个按值传递的变量)定义为窗体级变量时,在VB环境下能够正常运行,生成EXE后却不能正常运行。我再用vc进行调试,发现传入VC中的值不对。这就是出现异常的原因。然后,我将sndDataLen,RcvBufLen(即2个按值传递的变量)定义为过程级变量时,在VB环境下不能正常运行,生成EXE却能够正常运行有高手知道什么原因么?
先贴C中函数声明代码
extern "C" int PASCAL EXPORT Commit(
char * serverAddr, //服务器IP地址 in
int serverPort, //服务器端口号 in
char * sndBuf, //发送缓冲区 in
int sndDataLen, //发送缓冲区中数据的长度 in
char * rcvBuf, //接收缓冲区 out
int rcvBufLen, //接收缓冲区的大小 in
LPINT rcvDataLen, //接收缓冲区中数据的长度 out
int conTimeout = 5, //连接超时时间 秒 in
int sndTimeout = 5, //发送超时时间 秒 in
int rcvTimeout = 10 //接收超时时间 秒 in
)
下面是vb中的声明代码
Private Declare Function Commit Lib "mmsCrypto.dll" ( _
ByVal serverAddr As String, _
ByVal serverPort As Integer, _
ByRef sndBuf As Byte, _
ByVal sndDataLen As Integer, _
ByRef rcvBuf As Byte, _
ByVal RcvBufLen As Integer, _
ByRef rcvDataLen As Integer, _
Optional ByVal conTimeout As Integer = 5, _
Optional ByVal sndTimeout As Integer = 5, _
Optional ByVal rcvTimeout As Integer = 15 _
) As Integervb中定义各个变量:
ip,port是常量
Dim SndData() As Byte
Dim RcvData() As Byte
Dim sndDataLen As Integer
Dim RcvBufLen As Integer
Dim rcvDataLen As Integer奇怪现象:
当我将sndDataLen,RcvBufLen(即2个按值传递的变量)定义为窗体级变量时,在VB环境下能够正常运行,生成EXE后却不能正常运行。我再用vc进行调试,发现传入VC中的值不对。这就是出现异常的原因。然后,我将sndDataLen,RcvBufLen(即2个按值传递的变量)定义为过程级变量时,在VB环境下不能正常运行,生成EXE却能够正常运行有高手知道什么原因么?
解决方案 »
- 急!!!在线等~~~~! 在VB6_SP5 中PictureBox有Text属性吗?
- 一对多的保存问题?多谢了
- 这条SQL语句怎么写
- 怎么判断一个端口是否被占用
- VB6.0中如何禁止用户改变其窗口大小,在哪个地方改
- 怎样才能打印新的一页,在新的一页中不让第一条记录在页的顶层打印,而是错几行呢?
- vb+sql为什么不能在DataGrid中显示?小弟没分了
- 为什么我在webbrowser1对象后面取得Document后再打一个"."就什么也不出来了阿
- 如何让计算机的键盘,鼠标不在响应?
- 怎样在程序中修改MIDI窗体,工具栏的颜色!!!
- 二进制操作
- 菜鸟问题:怎么实现 01+1=02而不是01+1=2
都有可能产生兼容性问题。比如P代码和普通的代码优化,在不同的环境下是会
有区别的。而最容易碰到这种问题的情况就是调用C语言开发的API。毕竟C语言
对类型的要求和VB不同。所以很容易导致问题的产生,但单对于VB本身开发的
接口程序而言,就不会有这类问题。
ByVal serverAddr As String, _
ByVal serverPort As Long, _
ByRef sndBuf As Byte, _
ByVal sndDataLen As Long, _
ByRef rcvBuf As Byte, _
ByVal RcvBufLen As Long, _
ByRef rcvDataLen As Long, _
Optional ByVal conTimeout As Long = 5, _
Optional ByVal sndTimeout As Long = 5, _
Optional ByVal rcvTimeout As Long = 15 _
) As Long