在另一个目录中将 CreateComObject 与 DLL 一起使用
Use CreateComObject with DLL in another directory
我有一个 COM 可见的 C# class。我已使用导入组件(导入类型库)向导将其导入到我的 Delphi XE 项目中。如果我将 C# .DLL 放在与 Delphi .EXE 相同的目录中,我可以使用导入的 .PAS (TLB) 文件的 .Create 方法创建此 class 的实例并使用它 methods/functions。我想将此 .DLL 移动到另一个目录。如果它在另一个目录中,是否可以使用 Create 方法创建此 class 的实例?或者是否可以指示应用程序在另一个目录中查找新的 DLL?
我需要将 DLL 放在另一个目录中,因为我必须使用当前与 EXE 位于同一目录中的新版本 DLL,并且我无法覆盖可执行文件目录中的旧 DLL(这是遗留问题)需要那些旧 DLL 的应用程序)。因此,我打算将所有新的 DLL 放在一个子目录中并调用新函数。
我已经试过放在子目录下,应用程序找不到DLL。
CreateComObject 不要将文件名作为参数。它需要一个 GUID
用于查找 COM 对象所在的位置。该信息来自注册表,其中包含注册 COM 对象时创建的条目。
CreateComObject
是 Windows API 函数 CoCreateInstance.
的包装
如果移动 DLL,必须重新注册以反映新位置。
我有一个 COM 可见的 C# class。我已使用导入组件(导入类型库)向导将其导入到我的 Delphi XE 项目中。如果我将 C# .DLL 放在与 Delphi .EXE 相同的目录中,我可以使用导入的 .PAS (TLB) 文件的 .Create 方法创建此 class 的实例并使用它 methods/functions。我想将此 .DLL 移动到另一个目录。如果它在另一个目录中,是否可以使用 Create 方法创建此 class 的实例?或者是否可以指示应用程序在另一个目录中查找新的 DLL?
我需要将 DLL 放在另一个目录中,因为我必须使用当前与 EXE 位于同一目录中的新版本 DLL,并且我无法覆盖可执行文件目录中的旧 DLL(这是遗留问题)需要那些旧 DLL 的应用程序)。因此,我打算将所有新的 DLL 放在一个子目录中并调用新函数。
我已经试过放在子目录下,应用程序找不到DLL。
CreateComObject 不要将文件名作为参数。它需要一个 GUID
用于查找 COM 对象所在的位置。该信息来自注册表,其中包含注册 COM 对象时创建的条目。
CreateComObject
是 Windows API 函数 CoCreateInstance.
如果移动 DLL,必须重新注册以反映新位置。