EOleSysError“系统找不到COM对象中指定的文件”

时间:2015-03-17 11:12:31

标签: c# delphi dll com delphi-7

我正在开发一个Delphi7项目,该项目使用COM组件在delphi代码之外进行交互。所有这些组件都是用C#开发的。所有COM组件的Involked .tlb和.dll文件。也在注册表中注册。其他组件已经注册,可以在delphi代码中使用,除了一个。

当访问该特定COM对象的功能时,它会引发错误 -

  

项目ABC.exe引发异常类EOleSysError并显示消息'系统找不到指定的文件'。流程停止了。使用步骤或运行继续

我正在努力了解delphi中的COM部分,并检查了以下几个方面:

  1. 导入类型库 - 添加并安装dll
  2. 注册表 - 注册表项存在相同的
  3. 我曾经重建dll,将dll与delphi代码文件夹放在一起,并在delphi中使用相应的注册表项来使用COM组件。其他人使用相同的程序工作正常但不是这个。

    我应该检查什么以解决此问题?

1 个答案:

答案 0 :(得分:1)

您已在评论中确认您拥有64位程序集。您的Delphi编译器生成32位可执行文件。 32位可执行文件不能使用进程内64位COM服务器。虽然COM服务器已注册,但它已在64位COM注册表中注册。您的32位可执行文件搜索32位COM注册表并断定COM对象未注册。

您的选择:

  1. 消耗程序集out-of-proc。
  2. 将程序集切换为32位程序集,并在进程中使用它。