Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2008/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 将VB6 ActiveX DLL引用添加到VS2008项目_C#_Visual Studio 2008_Vb6_Reference_Activex - Fatal编程技术网

C# 将VB6 ActiveX DLL引用添加到VS2008项目

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”选项卡,在那里你可以添加参考,没有运气 我

在工作中,我们有一个VB6项目(ActiveX DLL),需要能够将其添加为另一个VS2008 C#项目的参考

那里的一位开发人员告诉我,在过去,他们能够做到这一点,但现在我们对VB6 DLL进行了更改,并不得不重新编译它

因此,我们需要更新VS2008项目中的引用,但当我们尝试将VB6 DLL中的引用添加回VS2008项目时(删除旧引用后),新添加的引用上会出现一个黄色的“!”图标,然后在构建时,VS2008表示找不到引用

我尝试了“浏览”和“COM”选项卡,在那里你可以添加参考,没有运气

我们需要某种TLB来添加它还是什么


谢谢。

您需要在命令提示符下执行以下操作:

#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–可以帮助您找出缺少的依赖项。