如何在.net项目中使用Reg-Free COM进行vb6 dll引用?
发布时间:2020-12-17 07:25:04 所属栏目:百科 来源:网络整理
导读:我一直试图解决这个问题很长一段时间,似乎没有任何作用. 我有一个用vb6编写的COM DLL.我在.net中添加了对此DLL的引用,并在引用上将’isolated’和’copy local’属性设置为true.显然这应该是启用reg-free com. 但它不起作用.如果我尝试使用另一台计算机,或使
我一直试图解决这个问题很长一段时间,似乎没有任何作用.
我有一个用vb6编写的COM DLL.我在.net中添加了对此DLL的引用,并在引用上将’isolated’和’copy local’属性设置为true.显然这应该是启用reg-free com. 但它不起作用.如果我尝试使用另一台计算机,或使用regsvr32取消注册DLL,尝试访问DLL会引发异常(实际上是说所需的com类不存在). DLL和清单文件与EXE位于同一文件夹中,但它显然完全忽略了它们. 我究竟做错了什么?我已经阅读了大量关于此的散文,但没有一篇能给我一个有效的解决方案.我用视觉工作室修补无济于事.我用make-my-manifest修改了一小部分,但它没有用(甚至在测试项目上). 解决方法
我在非ui线程上创建和使用com类.显然,vb6 DLL上的Reg-Free com在这种情况下不起作用.此测试代码显示:
Private Sub RunTest() Handles Button1.Click Try Dim x As New RegTestProject.RegTestCall MsgBox(x.RegTestFunction()) Catch ex As Exception MsgBox(ex.ToString) End Try End Sub Private Sub RunThreadedTest() Handles Button2.Click 'fails if reg-free COM is used' Dim t As New Threading.Thread(AddressOf RunTest) t.Start() End Sub 当我使用正常注册的DLL运行它时,两个测试都成功.如果我使用reg-free com,即使正常测试仍然成功,线程测试也会失败.看起来这对于解决方案来说将是一个巨大的痛苦. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |