我的回答可能有问题,我是一个新手,我找不到能够解决问题的答案。
我正在使用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中,但这并没有解决问题。
上述过程有什么问题?
答案 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