我把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 #1End 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 #1End Sub

解决方案 »

  1.   

    函数声明和原型不匹配
    dll里面有内存泄漏或者VB无法处理的win32异常。
      

  2.   

    1楼说的对,在test.dll里面有vb无法处理的异常错误
      

  3.   

    看你这代码,是利用DLL去读写文件的.调用后如果VB崩溃,说明DLL里面有不正确的内存操作.你的DLL确定是stdCall约定的?除了这个,就得看DLL源代码才知道了.
      

  4.   

    .......VBGOOD里传说中的人物之一啊,幸会幸会....
      

  5.   

    各位大哥有没有会用Matlab关于矩阵运算的,我在做毕业设计,需要用他处理数据,可是我现在一点都不会。谢谢各位啦》