嗨,我使用互操作在Delphi中调用C#代码。
C#代码具有二进制文件,在Delphi 5菜单中:项目->导入类型库
单击添加以添加tlb文件:XXXX.tlb
单元目录名称:输入生成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#二进制文件中,我具有以下功能:
func1();
func2();
func3();
func4(); //新添加

在旧的XXX_TLB.pas中,功能顺序为:
func1();
func2();
func3();
现在XXX_TLB.pas是这样的:
func1();
func3();
func4();
func2();

XXX_TLB.pas仍然可以使用,看起来没有功能差异,但是当我签入tfs时,我发现它与以前的版本有很大的不同。有没有办法使这个新的XXX_TLB.pas保持与以前相同的顺序,但是还要添加我的功能?怎么做?谢谢!

最佳答案

除非您自己开始编写.pas文件,否则您不能希望将更改降至最低。这听起来是一个更糟糕的选择。

可能发生的情况是,自上次导入以来,您已经更改了任一编译器的版本。否则,人们会期望差异最小。

只需在注释中注明使用了哪个版本的编译器和.ocx / .dll即可。

10-08 13:09