日期:2014-05-17  浏览次数:20854 次

请问,使用 VB6 调用 C#.Net 的 DLL ,不会要在每一台目标电脑上都要重新编绎一次才可以吧?????
Hi,

我在一台 电脑A 里面使用 VB6 调用 C#.Net 的 DLL ,当时不知在该机器用过多少种方法,忘记哪个对哪个错了,

最后成功让 VB6 可以调用到 C#.Net 的 DLL 里面的方法,

并且,电脑A 里面通过 Visual Basic 6.0 也可以最终生成一个 TestVB6.exe 并成功运行调用 C#.Net DLL。


---------------------------

现在问题来了,我把 电脑A 里面的 TestVB6.exe 以及 C#.Net.DLL 复制到 电脑B, 运行的时候提示出错,具体出错原因就是一开始的时候,找不到类型库可能是。

-------------------------------

请问,使用 VB6 调用 C#.Net 的 DLL ,不会要在每一台目标电脑上都要重新编绎一次才可以吧?????

请指教一下,谢谢。

------解决方案--------------------
你其他机器是否有支持版本的dotNET framework才行。
------解决方案--------------------
引用:
Quote: 引用:

你其他机器是否有支持版本的dotNET framework才行。


我已经装了 .Net 了,与电脑A一样装了同一个版本,不同的是电脑A是用来开发的, 

电脑B 相当于是客户端用的没有安装工发工具。

我刚才在 VB6 的出错信息发现,这个提示是:

Error Number 339
Component 'MSCAL.OCX' or one of its dependencies not correctly registered: a file is missing or invalid

从这个错误提示来看,好像不是调用 .Net DLL 的问题了,请问这个是什么原因??
我在电脑A里面用 Visual Basic 6 就直接生成一个 exe 复制到 电脑B 来运行了,结果就出现这个提示,

是不是有什么东西没做??

报错信息的意思是系统组件中'MSINET.OCX' 文件丢失了或者不能使用,解决这个问题很简单。
下载MSINET.OCX文件,解压后把MSINET.OCX文件复制到c:\windows\system32\目录下。
然后点击“开始”“运行”中输入 regsvr32 msinet.ocx 回车,再试试,你的软件就可以运行了。
------解决方案--------------------
ocx只要注册就可以,放在哪里无所谓。
------解决方案--------------------
注册后,其他需要该组件的程序都不用再次注册了
放在目录下,只是你的程序能用(系统加载程序集会逐一搜索系统目录和当前目录),其他程序仍然会报错
------解决方案--------------------
dll无法自己注册,ocx可以自动发现和注册,但是权限要足够(注册ocx的权限高于仅仅运行程序的权限)

最好还是打包注册下。
------解决方案--------------------
regsvr32 x:\path\file.ocx/dll
------解决方案--------------------
引用:
Quote: 引用:

regsvr32 x:\path\file.ocx/dll


所有看到的 .ocx 都需要做 regsvr32 吗?

自动注册其实也相当于调用这个命令。
------解决方案--------------------
引用:
Quote: 引用:

Quote: 引用:

Quote: 引用:

regsvr32 x:\path\file.ocx/dll


所有看到的 .ocx 都需要做 regsvr32 吗?

自动注册其实也相当于调用这个命令。


还有个问题,如果你是说自动注册,假设我使用 Administrator 去安装与使用一次,这样在 Administrator 运行 Test.exe 的时候,这些 .ocx 就会被自动注册一次,

那如果接下来的使用 User A 没什么权限的用户去运行 Test.exe ,那就表示其实 .ocx 已经注册过了?


之所以注册需要更高的权限,是