在Delphi下使用C#DLL作为COM

时间:2010-09-03 09:28:24

标签: c# delphi com typelib

我们得到了一个由C#程序员编写的DLL,编译为可用作COM对象。

我们咨询这些开发人员以获取函数名称和语法,我们可以在用regasm注册后使用它。

这没关系,但我们有更多的问题需要更快的开发(更改),有些事情是不可理解的或无法工作。

我们使用了Delphi 6专业版,并使用C#Visual Studio 2008进行了组装(我认为)。

让我们看看他们:

1)。 我不能使用C#代码的typelib(TLB),因为我无法导入Delphi。

结果是:

"Hiba az OLE beállításjegyzék használata közben."

Translate ~ "Error occured on use OLE typelib/setting lib"

错误的可能来源:

a。)Delphi 6无法导入新的COM dll-s。

b。)我们必须强制C#生成一个较旧的格式化TLB。

我们尝试用regasm重新生成TLB,但我们也遇到了这个错误。

这可能是不可能的,但如果情况b。)发生了,我们需要对C#开发人员说什么 - 如何编译DLL-s?

(Delphi无法使用DLL-s,因为它们没有自我启动部分。)

2)。 有趣: 所有参数都正确转换为变体反之亦然,但如果C#方法没有参数,我在Delphi方面遇到错误... 例如(伪):

proc A():bool;

调用A在Delphi端生成错误。

proc A(Dummy: bool):bool;

调用A(False)工作正常。

我不知道,为什么我们得到这个。 你对此有何看法?这是C#编译问题吗?

感谢您的帮助:    DD

1 个答案:

答案 0 :(得分:1)

这里的最佳路线是获取源代码,显示通过COM使用C#成功使用DLL。 DLL的开发人员应该能够提供。在可以通过COM访问DLL之前,DLL可能还必须在regasm regsvr32.exe注册,因为它将用于本机COM DLL)。与往常一样,如果没有更多的实际代码,就很难回答这些问题。