易截截图软件、单文件、免安装、纯绿色、仅160KB

VC的DLL如果通过参数向VB传数据? - VB / 基础类

我这样写的.
VC DLL部分
size_t *Ep2ReadLen;
extern "C" int _stdcall TestDLL(size_t* iPort2ReadLen)
{
Ep2ReadLen = iPort2ReadLen;
*Ep2ReadLen = 5; //这里
if (Ep2ReadLen)
{
free(Ep2ReadLen);
//Ep2ReadLen=NULL;
}

return 0;
}

VB部分
Declare Function TestDLL Lib "XXX.dll" (ByRef iPort2ReadLen As Integer) As Integer
Dim iPort2ReadLen As Integer
rt = TestDLL(iPort2ReadLen)

编译通过,运行VB程序,调用,能正确返回5。但是在关闭VB程序时,报错。
但在上面的 *Ep2ReadLen = 5; 注释掉后,就不报错了。说明是这行导致的。
我曾考虑是不是VC指针没有释放,所以加上 free(Ep2ReadLen);
但结果仍然一样。
请教各位,错在哪里?


、、、、、、、、、、、、、、、、、

free(Ep2ReadLen);的添加不是我的本意,最先是没有加这行的,但最终关闭VB程序报错后,我增加了这行,结果相同。
我原以为是没有释放指针,导致的报错,但现在看好像又不是 :(

VB好像没有指针?

、、、、、、、、、、、、、、、、、

VB中
我又试了一下

测试一:

Dim iPort2ReadLen As Integer
Private Sub Command1_Click()  
  iPort2ReadLen = 34
  rt = TestDLL(iPort2ReadLen)
  MsgBox iPort2ReadLen
End Sub

iPort2ReadLen 作为全局变量,关闭VB窗体时“报错”。


测试二:

Private Sub Command1_Click()  
  Dim iPort2ReadLen As Integer
 


相关问答:

vb超简单form.show的问题 - VB / 非技术类

为什么我用form.show和form.hide多次连接了两个窗口只能互换链接两次啊?
代码看看
照道理form.show 没次数限定的吧

我也快疯了。
楼主知道怎么发贴么?

引用
我也快疯了。
楼主知道怎么发贴么?
楼主也 ......

vb读取用word转换成的xml里的数据 - VB / 基础类

Private Sub Command1_Click()
Dim MyString() As String
Open "a.xml" For Binary As #1 ' 打开刚创建的文件。
ReDim MyString(LOF(1) - 1)
  Put #1, , MyRecord ' 读入所有字符到变量中 ......

vb - VB / 非技术类

怎么把已知的数据保存成xml文件,现在已知的数据是
<?mso-application progid="Excel.Sheet"?>
<Workbook xmlns="urn:schemas-microsoft-com:office:spreadsheet"
 xmlns:o=& ......

vb activex 传递参数 - VB / COM/DCOM/COM+

我用VB写了一个activex,现在想在js里面向activex传值,写了一个public方法不行,写了一个属性也不行,请高手指点,在线等候,代码如下
变量声明
Dim dirName As String = ""
方法
Public Sub UrlName( ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号