【发布时间】:2012-01-12 14:37:13
【问题描述】:
您好,我在 Delphi 中使用互操作调用 C# 代码。 C# 代码有一个二进制文件,并且在 Delphi 5 菜单中:Project-->Import Type Library 点击Add添加tlb文件:XXXX.tlb Unit dir name:输入生成delphi XXX_TLB.pas文件的路径。
如果 C# dll、tlb 和 delphi XXX_TLB.pas 已经存在。现在我在 C# 代码中添加了一个函数,希望 Delphi 也可以调用这个函数。我需要重新编译 c# 并重新生成 delphi XXX_TLB.pas 文件。但是按照上述步骤,我看到新生成的 XXX_TLB.pas 包含了我新添加的函数,但是看起来 XXX_TLB.pas 中的函数顺序与之前完全不同。
例如,在我的 C# 二进制文件中,我有函数: 函数1(); 函数2(); 函数3(); func4();//新添加的
在旧的XXX_TLB.pas中,函数顺序为: 函数1(); 函数2(); 函数3(); 现在 XXX_TLB.pas 是这样的: 函数1(); 函数3(); func4(); func2();
XXX_TLB.pas 仍然可以使用,看起来没有功能差异,但是当我签入 tfs 时,我发现它与以前的版本相比有很大变化。有没有办法让这个新的 XXX_TLB.pas 保持与以前相同的顺序,但也添加我的函数?怎么做?谢谢!
【问题讨论】:
-
我相信它只是被重新排序的类包装器。 COM 接口不能发生这种情况,因为它会改变可行的顺序。