Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/18.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
Com 带有消息的EOleSysError';类别未注册';_Com_Dll_Types - Fatal编程技术网

Com 带有消息的EOleSysError';类别未注册';

Com 带有消息的EOleSysError';类别未注册';,com,dll,types,Com,Dll,Types,我已经用我创建的.NET DLL创建了一个类型库。然后我将其导入Delphi,并在COM对象的接口中调用一个方法。当它试图创建COM对象时,我得到一个错误,该类没有注册。DLL已向GAC注册,因此不应如此。有人知道还有什么可能导致这种情况吗?您需要向COM公开.NET程序集-使用带有/codebase键的regasm.exe。通过使用COM visible属性并使用/tlb创建类型库,可以向COM公开我的程序集。根据我的记忆/codebase是当您想要指定程序集的路径时。但是我已经把它放进了GA

我已经用我创建的.NET DLL创建了一个类型库。然后我将其导入Delphi,并在COM对象的接口中调用一个方法。当它试图创建COM对象时,我得到一个错误,该类没有注册。DLL已向GAC注册,因此不应如此。有人知道还有什么可能导致这种情况吗?

您需要向COM公开.NET程序集-使用带有/codebase键的regasm.exe。

通过使用COM visible属性并使用/tlb创建类型库,可以向COM公开我的程序集。根据我的记忆/codebase是当您想要指定程序集的路径时。但是我已经把它放进了GAC,所以我不需要这样做。除非我弄错了,否则ComVisible可以通过COM使用该类。但是,除非您使用regasm公开它,以便将类ID添加到注册表,否则使用者将无法检测程序集位置。你混淆了三件完全不同的事情。ComVisible使一个条目可以从COM访问。类型库用作使用者发现程序集可以公开哪些实体的机制。使用regasm向registry公开允许使用者实际查找实现所需类的程序集。