VB.net 调用 dll 问题

NorthGod 2011-03-05 09:03:20
算法使用c++写的,封装成dll文件,就是用那种 VB 中常用的方法,生命诚 _stdcall 这样的,然后在 vb.net 中用 Dclare Function *** Lib "**" 这种方法调用,这个算法是要不停的运行的,结果总是在运行很长时间之后程序突然就退出了,连错误提示都没有,而且具体多长时间每次都不固定。而我试着把dll中的函数去掉就没有问题,看来还是调用的问题,在网上找资料说用类封装成托管的调用起来可能会好一些,但是我不太会,想问一下要怎么把 c++ 函数封装成托管的dll呢,又怎么在 vb.net里面调用,谢谢
...全文
110 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
music_0000 2011-03-07
  • 打赏
  • 举报
回复
可以适当延长主窗体的显示时间间隔,太过于频繁,效果肯定不好
比如说除3=0时方显示
devil4bob 2011-03-07
  • 打赏
  • 举报
回复
可能是电脑奔不动了
hyy514 2011-03-07
  • 打赏
  • 举报
回复
VB.NET 和VB有什么不同?
lliai 2011-03-07
  • 打赏
  • 举报
回复
看看还有参数在传递
还是江筱吧 2011-03-06
  • 打赏
  • 举报
回复
间隔1~2毫秒的话,线程的全部工作可以执行的完?会不会出现 线程叠加在一起?
NorthGod 2011-03-06
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 hellomicrosoft 的回复:]

间隔1~2毫秒的话,线程的全部工作可以执行的完?会不会出现 线程叠加在一起?
[/Quote]

我说的间隔1~2毫秒是指每次处理之间的间隔,实际处理一次要20毫秒左右,但是要求实时显示数据,就要频繁更新主窗体,使用Invoke的话主界面就总是处于更新界面的状态,界面响应变得不好
NorthGod 2011-03-05
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 hellomicrosoft 的回复:]
dll 调用有没有参数?我原来也出现过突然程序关闭的状况,就是参数长度。类型不匹配 ,不知你是不是
[/Quote]

他要是一下就退出我也就无怨无悔了,关键是每次都是运行很长时间之后才退出的,我觉得应该是内存管理的问题,另外就是我这程序中用到了多线程,在线程中对主窗体的控件(比如textbox)进行修改,不知道会不会是由于线程的操作冲突引起的,我在考虑把所有的界面更新用委托的方式写一下,不知道会不会是这个原因
还是江筱吧 2011-03-05
  • 打赏
  • 举报
回复
dll 调用有没有参数?我原来也出现过突然程序关闭的状况,就是参数长度。类型不匹配 ,不知你是不是
NorthGod 2011-03-05
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 hellomicrosoft 的回复:]
你的程序在关闭的时候,会不会报出“access violation at address 内存地址”之类的错误呢?如果报出来,那可能是dll的问题,要是不报出的话,可能是多线程冲突,我猜测。我以前也开过多线程,没有问题的
[/Quote]

没有你说的那个错误,调试了一下,确实提示是线程中不能对主线程的UI进行改动,改用Invoke方式后就好了,看来是现成的问题。但另外一个问题就来了,我的线程中要处理算法,基本上是不停地,间隔在1~2毫秒左右,如果用Invoke方法的话虽然可以更新主界面,但是界面的响应变得很差,用BeginInvoke方式异步执行的话要好一些,但是响应也不怎么样,如何能让主界面实时响应呢?
还是江筱吧 2011-03-05
  • 打赏
  • 举报
回复
你的程序在关闭的时候,会不会报出“access violation at address 内存地址”之类的错误呢?如果报出来,那可能是dll的问题,要是不报出的话,可能是多线程冲突,我猜测。我以前也开过多线程,没有问题的

16,554

社区成员

发帖
与我相关
我的任务
社区描述
VB技术相关讨论,主要为经典vb,即VB6.0
社区管理员
  • VB.NET
  • 水哥阿乐
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧