我们创建一个与VB6一起使用的C#dll(ComVisible = true,Register for COM Interop)。 在开发者PC上的VB6中,一切正常。
我们尝试在另一台PC上重新分发它。我们知道我们应该在 x64 Windows上使用以下命令行重新生成 tlb 文件
C:\Windows\Microsoft.NET\Framework64\v4.0.30319\RegAsm.exe C:\CLYO\Clyo.Interfaces.dll /tlb:C:\CLYO\Clyo.Interfaces.tlb
我们也尝试使用代码库
C:\Windows\Microsoft.NET\Framework64\v4.0.30319\RegAsm.exe C:\CLYO\Clyo.Interfaces.dll /tlb:C:\CLYO\Clyo.Interfaces.tlb /codebase
但我们继续获得Error 429 - ActiveX component can't create object
任何想法?
注意:我们的C#代码为每个类和接口
使用不同的Guid[InterfaceType(ComInterfaceType.InterfaceIsDual)]
[Guid("EC8D67C4-0B8B-4692-9CA4-8657805D9B40")]
public interface IRestoFlash
{
...
}
[ClassInterface(ClassInterfaceType.None)]
[Guid("D068F8B5-AAC8-48D2-BEED-4505DBC802D6")]
[ProgId("Clyo_Interfaces.RestoFlash")]
public class RestoFlash:IRestoFlash
{
...
}
答案 0 :(得分:0)
使用Regasm x32的路径解决了问题......
C:\Windows\Microsoft.NET\Framework\v4.0.30319\RegAsm.exe
^^ (without 64)