当前位置:编程学习 > VB >>

VB调用dll函数,程序自动关闭

我把matlab的m文件通过VC++6.0转成dll,然后在vb中引用

程序功能是:点击command1生成16个随机数,并写入t.txt,点击command2调用dll中的过程,换成傅里叶变换,并写入t.txt中,command3读取完成傅里叶变换的数据(已保存在t.txt中)
现在功能可以实现,就是点击command2后,程序会自动关闭,但是傅里叶变换已完成,且已写入t.txt,只是要重新打开程序,按command3.

求教问题可能出在什么地方呢?

vb代码:
'申明dll
Private Declare Sub mlfTest1 Lib "test.dll" ()
’按键一生成随机数,输出到text1,并且写入t.txt
Private Sub Command1_Click()
Randomize
Dim i As Integer
Dim a As Integer
Dim b As String
Text1.Text = ""
Open "c:\t.txt" For Output As #1
For i = 1 To 16
a = Int(10 * Rnd)
Print #1, LTrim(a)
b = b & Str(a) & Chr(13) & Chr(10)
Next i
Text1.Text = b
Close #1

End Sub
'按键二调用dll中函数,完成傅里叶变换,并写入t.txt
Private Sub Command2_Click()
mlfTest1
End Sub


’读取t.txt中内容到文本框二
Private Sub Command3_Click()
Dim str1 As String
Dim str2 As String
Text2.Text = ""
Open "c:\t.txt" For Input As #1
Do While Not EOF(1)
Line Input #1, str1
str2 = str2 & str1 & Chr(13) & Chr(10)
Loop
Text2.Text = str2
Close #1

End Sub

--------------------编程问答-------------------- 函数声明和原型不匹配
dll里面有内存泄漏或者VB无法处理的win32异常。 --------------------编程问答-------------------- 那应该怎么改呢。。。 --------------------编程问答-------------------- 1楼说的对,在test.dll里面有vb无法处理的异常错误 --------------------编程问答-------------------- 看你这代码,是利用DLL去读写文件的.

调用后如果VB崩溃,说明DLL里面有不正确的内存操作.

你的DLL确定是stdCall约定的?

除了这个,就得看DLL源代码才知道了. --------------------编程问答--------------------
引用 4 楼 myjian 的回复:
看你这代码,是利用DLL去读写文件的.

调用后如果VB崩溃,说明DLL里面有不正确的内存操作.

你的DLL确定是stdCall约定的?

除了这个,就得看DLL源代码才知道了.


传说中的老马?居然能在这里遇见哦。 --------------------编程问答-------------------- .......VBGOOD里传说中的人物之一啊,幸会幸会.... --------------------编程问答-------------------- 各位大哥有没有会用Matlab关于矩阵运算的,我在做毕业设计,需要用他处理数据,可是我现在一点都不会。谢谢各位啦》
补充:VB ,  COM/DCOM/COM+
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,