C# 将VB6 ActiveX DLL引用添加到VS2008项目
在工作中,我们有一个VB6项目(ActiveX DLL),需要能够将其添加为另一个VS2008 C#项目的参考 那里的一位开发人员告诉我,在过去,他们能够做到这一点,但现在我们对VB6 DLL进行了更改,并不得不重新编译它 因此,我们需要更新VS2008项目中的引用,但当我们尝试将VB6 DLL中的引用添加回VS2008项目时(删除旧引用后),新添加的引用上会出现一个黄色的“!”图标,然后在构建时,VS2008表示找不到引用 我尝试了“浏览”和“COM”选项卡,在那里你可以添加参考,没有运气 我们需要某种TLB来添加它还是什么C# 将VB6 ActiveX DLL引用添加到VS2008项目,c#,visual-studio-2008,vb6,reference,activex,C#,Visual Studio 2008,Vb6,Reference,Activex,在工作中,我们有一个VB6项目(ActiveX DLL),需要能够将其添加为另一个VS2008 C#项目的参考 那里的一位开发人员告诉我,在过去,他们能够做到这一点,但现在我们对VB6 DLL进行了更改,并不得不重新编译它 因此,我们需要更新VS2008项目中的引用,但当我们尝试将VB6 DLL中的引用添加回VS2008项目时(删除旧引用后),新添加的引用上会出现一个黄色的“!”图标,然后在构建时,VS2008表示找不到引用 我尝试了“浏览”和“COM”选项卡,在那里你可以添加参考,没有运气 我
谢谢。您需要在命令提示符下执行以下操作:
#CD to wherever the dll is located
regsrv32 /u foo.dll
regsrv32 foo.dll
这将注销旧com对象并注册新对象。他说得对,您可以在命令提示符下执行此操作 请记住,您的Active-X控件DLL可能是16位的,因此请使用
regsrv /u foo.dll
regsrv foo.dll
从命令提示符。但是对于regsrv32,32位可以很好地工作 我使用了OLE/COM对象查看器(包含在Windows SDK 6.0A中),然后在“所有对象”中看到了一堆COM条目,例如:MyDLLName.className,其中一些指向不再存在的DLL文件。删除Windows注册表中指向已删除DLL的所有相关COM项,并保留所有指向现有DLL的COM项,然后我可以在我的VC#项目中成功导入它。奇怪的问题。否,TLB嵌入在VB6 DLL中。您可以通过运行Tlbimp.exe,然后将生成的互操作程序集添加到引用中来显式执行此操作。可能您在此过程中收到了更好的错误消息。VB6无法生成16位DLL。我从您的建议中了解到:错误1无法确定COM引用“MyHappingVB6DLL”的依赖关系。加载类型库/DLL时出错。(来自HRESULT的异常:0x80029C4A(TYPE_E_CANTLOADLIBRARY))WindowsFormsApplication1–可以帮助您找出缺少的依赖项。