VB6中可以调用.NET创建的DLL吗?

ynduanlian 2013-02-05 11:32:51
在.NET中可以引用另一个.NET项目已经创建的DLL,在VS.NET中添加“引用”即可。

在VB6中想使用这个DLL要怎么办?
...全文
260 9 打赏 收藏 举报
写回复
9 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
赵4老师 2015-03-06
《Unix编程艺术》
  • 打赏
  • 举报
回复
赵4老师 2015-03-06
A将请求数据写到文件a.txt,写完后改名为aa.txt B发现aa.txt存在时,读取其内容,调用相应功能,将结果写到文件b.txt,写完后删除aa.txt,改名为bb.txt A发现bb.txt存在时,读取其内容,读完后删除bb.txt 这个麻烦吗? 至于你说进程意外中止: 为什么要搞心跳防护?因为被检测进程不时心脏停跳。 为什么被检测进程不时心脏停跳?因为被检测进程亚健康。 怎么知道被检测进程亚健康的原因: 在任务管理器 进程 查看 选择列 里面选择:内存使用、虚拟内存大小、句柄数、线程数、USER对象、GDI对象 让你的程序(进程)不退出,循环执行主流程很多遍,越多越好,比如1000000次甚至无限循环,记录以上各数值,再隔至少一小时,越长越好,比如一个月,再记录以上各数值。如果以上两组数值的差较大或随时间流逝不断增加,则铁定有对应资源的资源泄漏! 根治了被检测进程亚健康→被检测进程不再心脏停跳→不用再搞心跳防护。 越依赖心跳防护→被检测进程心脏停跳越频繁→被检测进程越不健康! 怎么心跳防护“用来心跳防护不健康进程C”的进程B的不健康? 怎么心跳防护“用来心跳防护‘用来心跳防护不健康进程C”的进程B’的进程A”的不健康? http://bbs.csdn.net/topics/390787357
  • 打赏
  • 举报
回复
ynduanlian 2015-03-06
上面并没有回答我的问题啊! 如果是通过共享临时文本文件这种进程之间的通讯方法,就存在需要考虑进程间如何同步。A进程多长时间检测一次bb.txt已经存在?如果B进程被意外终止,A进程如何得知并结束等待?
  • 打赏
  • 举报
回复
赵4老师 2015-03-05
不要做A语言代码修改为B语言代码的无用功。 也不要做用A语言代码直接调用B语言代码库这样复杂、这样容易出错的傻事。 只需让A、B语言代码的输入输出重定向到文本文件,或修改A、B语言代码让其通过文本文件输入输出。 即可很方便地让A、B两种语言之间协调工作。 比如: A将请求数据写到文件a.txt,写完后改名为aa.txt B发现aa.txt存在时,读取其内容,调用相应功能,将结果写到文件b.txt,写完后删除aa.txt,改名为bb.txt A发现bb.txt存在时,读取其内容,读完后删除bb.txt 以上A可以替换为任何一种开发语言或开发环境,B可以替换为任何一种与A不同的开发语言或开发环境。 除非A或B不支持判断文件是否存在、文件读写和文件更名。 但是谁又能举出不支持判断文件是否存在、文件读写和文件更名的开发语言或开发环境呢? 共享临时文本文件这种进程之间的通讯方法相比其它方法的优点有很多,下面仅列出我现在能想到的: ·进程之间松耦合 ·进程可在同一台机器上,也可跨机,跨操作系统,跨硬件平台,甚至跨国。 ·方便调试和监视,只需让第三方或人工查看该临时文本文件即可。 ·方便在线开关服务,只需删除或创建该临时文本文件即可。 ·方便实现分布式和负载均衡。 ·方便队列化提供服务,而且几乎不可能发生队列满的情况(除非硬盘空间满) ·…… “跨语言、跨机,跨操作系统,跨硬件平台,跨国,跨*.*的”苦海无边, 回头是“使用共享纯文本文件进行信息交流”的岸!
  • 打赏
  • 举报
回复
ynduanlian 2015-03-05
您说的这个我也想过。但是很多时候想要实现程序代码的顺序执行,这样通过进程外松耦就不方便实现程序控制。 比如我想执行B组件的某个功能,在B组件执行完以后再进行下一步处理,就以您上述所说的情况为例,如果是进程内调用DLL的话,我可以在代码中这样: x=loadlibrary("B.dll") bRes=x.method1; if bRes Then 调用B组件代码(B.DLL)执行,执行完后再进行下一步……这个几乎无需进行太多处理,因为我们调用一个DLL本来就是同步顺序的,执行完以后才会转入一下语句。但如果是通过共享临时文本文件这种进程之间的通讯方法,就存在需要考虑进程间如何同步。A进程多长时间检测一次bb.txt已经存在?如果B进程被意外终止,A进程如何得知并结束等待?这些可能就很麻烦…… 您对此怎么看呢?
  • 打赏
  • 举报
回复
ynduanlian 2015-03-05
引用 4 楼 zhao4zhong1 的回复:
不要做A语言代码修改为B语言代码的无用功。 也不要做用A语言代码直接调用B语言代码库这样复杂、这样容易出错的傻事。 只需让A、B语言代码的输入输出重定向到文本文件,或修改A、B语言代码让其通过文本文件输入输出。 即可很方便地让A、B两种语言之间协调工作。 比如: A将请求数据写到文件a.txt,写完后改名为aa.txt B发现aa.txt存在时,读取其内容,调用相应功能,将结果写到文件b.txt,写完后删除aa.txt,改名为bb.txt A发现bb.txt存在时,读取其内容,读完后删除bb.txt 以上A可以替换为任何一种开发语言或开发环境,B可以替换为任何一种与A不同的开发语言或开发环境。 除非A或B不支持判断文件是否存在、文件读写和文件更名。 但是谁又能举出不支持判断文件是否存在、文件读写和文件更名的开发语言或开发环境呢? 共享临时文本文件这种进程之间的通讯方法相比其它方法的优点有很多,下面仅列出我现在能想到的: ·进程之间松耦合 ·进程可在同一台机器上,也可跨机,跨操作系统,跨硬件平台,甚至跨国。 ·方便调试和监视,只需让第三方或人工查看该临时文本文件即可。 ·方便在线开关服务,只需删除或创建该临时文本文件即可。 ·方便实现分布式和负载均衡。 ·方便队列化提供服务,而且几乎不可能发生队列满的情况(除非硬盘空间满) ·…… “跨语言、跨机,跨操作系统,跨硬件平台,跨国,跨*.*的”苦海无边, 回头是“使用共享纯文本文件进行信息交流”的岸!
您说的这个我也想过。但是很多时候想要实现程序代码的顺序执行,这样通过进程外松耦就不方便实现程序控制。 比如我想执行B组件的某个功能,在B组件执行完以后再进行下一步处理,就以您上述所说的情况为例,如果是进程内调用DLL的话,我可以在代码中这样: 调用B组件代码(B.DLL)执行,执行完后再进行下一步。这个几乎无需进行太多处理,因为我们调用一个DLL本来就是同步顺序的,执行完以后才会转入一下语句。但如果是通过共享临时文本文件这种进程之间的通讯方法,就存在需要同步处理。A进程多长时间检测一次bb.txt已经存在?如果B进程被意外终止,A进程如何得知并结束等待?这些可能就很麻烦…… 您对此怎么看呢?
  • 打赏
  • 举报
回复
ynduanlian 2015-02-26
有没有什么办法在程序中判断用户是否安装.net framework,是哪个版本的呢?
  • 打赏
  • 举报
回复
ynduanlian 2015-02-26
要用RegAsm.exe注册?那是不是就意味着,在没有.NET Framework的电脑上是无法使用这个DLL的?
  • 打赏
  • 举报
回复
threenewbee 2013-02-05
可以,在.NET中新建一个类库。 将其中的类定义成public,注意VB不支持带参数的构造函数,你的定义也应该避免。 加上[ComVisible(true)],使得它对Com可见。 编译 再用RegAsm.exe注册。 这样就可以用VB访问了。
  • 打赏
  • 举报
回复
发帖
VB基础类

7617

社区成员

VB 基础类
社区管理员
  • VB基础类社区
加入社区
帖子事件
创建了帖子
2013-02-05 11:32
社区公告
暂无公告