COM互操作DLL文件与exe文件分开

时间:2014-12-24 07:57:20

标签: .net delphi dll com-interop

我的回答可能有问题,我是一个新手,我找不到能够解决问题的答案。

我正在使用Delphi xe5开发一个使用.NET程序集的应用程序。

我使用Regasm.exe注册了程序集。     \ Regasm.exe / tlb TestLib.dll

接下来,从Delphi的Conponent菜单中选择Import Component,然后选择Imported Type Library,然后创建TestLib_TLB.pas文件。 将TestLib_TLB.pas添加到项目中,通过pas文件我可以调用程序集提供的函数/过程。

问题是如果DLL位于app exe文件的不同文件夹中,程序集的API调用将失败。

我尝试使用gacutil.exe将DLL文件注册到GAC中,但这并没有解决问题。

上述过程有什么问题?

1 个答案:

答案 0 :(得分:0)

Regasm sintax应该是

regasm TestLib.dll /tlb:TestLib.tlb

这将注册TestLib.dll并创建并注册TestLib.tlb。

在此之后,您不应移动,重命名,替换或删除TestLib.dll或TestLib.tlb,因为它们的位置和COM接口现在都写在注册表中。如果必须,请先取消注册“旧”组件

regasm TestLib.dll /unregister /tlb:TestLib.tlb

然后放入新的dll并重新注册。

regasm SomeFolder\TestLib.dll /tlb:AnotherFolder\TestLib.tlb