在Delphi下使用C#DLL作为COM

在Delphi下使用C#DLL作为COM,c#,delphi,com,typelib,C#,Delphi,Com,Typelib,我们得到了一个由C#程序员编写的DLL,编译成可用作COM对象 我们咨询这些开发人员以获得函数名和语法,我们可以在向regasm注册后使用它 这是可以的,但是我们有更多的问题需要更快的开发(关于变更),有些事情是不可理解的或者不起作用的 我们使用了Delphi 6 professional和C#Visual Studio 2008制作的汇编(我认为) 让我们看看他们: 1.) 我不能使用C代码的typelib(TLB),因为我不能导入Delphi 结果是: "Hiba az OLE beállí

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

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

这是可以的,但是我们有更多的问题需要更快的开发(关于变更),有些事情是不可理解的或者不起作用的

我们使用了Delphi 6 professional和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、 )我们必须强制生成一个旧格式的TLB

我们试图用regasm重新生成TLB,但也出现了此错误

也许这是不可能的,但如果情况b.)发生了,我们需要对C#开发者说什么——如何编译DLL-s

(DLL-s对于Delphi来说并不重要,因为它们没有self-init部分)

(二) 有趣的是: 所有参数都正确地转换为变量,反之亦然,但是如果C#方法没有参数,我在Delphi端得到错误。。。 例如(伪):

调用A在Delphi端生成错误

proc A(Dummy: bool):bool;
调用A(False)可以正常工作

我不知道,为什么我们会这样。 你觉得这个怎么样?这是C#编译问题吗

感谢您的帮助:
dd

这里的最佳途径是通过COM获取显示DLL成功使用的源代码,例如使用C#。DLL的开发人员应该能够提供这一点。在通过COM访问DLL之前,DLL可能还必须向
regasm
注册(而不是像本机COM DLL那样注册
regsvr32.exe
)。像往常一样,如果没有更多的实际代码,很难回答这样的问题。

这里的最佳途径是通过COM获得显示DLL成功使用的源代码,例如使用C#。DLL的开发人员应该能够提供这一点。在通过COM访问DLL之前,DLL可能还必须向
regasm
注册(而不是像本机COM DLL那样注册
regsvr32.exe
)。像往常一样,如果没有更多实际的代码,很难回答这样的问题。

您无法注册使用regsvr32公开COM的.Net DLL。你必须使用regasm。@Cole W:我不知道。我没有使用.NET的经验。我已经修改了我的答案。您不能注册使用regsvr32公开COM的.Net DLL。你必须使用regasm。@Cole W:我不知道。我没有使用.NET的经验。我已经修改了我的答案。我对你问题的某些部分感到困惑。你说这个带有COM接口的C#dll是可用的,但是你没有把它导入Delphi6。我不熟悉delphi,但我假设如果导入失败,您甚至无法编译使用它的代码。你能试着导入dll而不是tlb吗?我被你问题的某些部分弄糊涂了。你说这个带有COM接口的C#dll是可用的,但是你没有把它导入Delphi6。我不熟悉delphi,但我假设如果导入失败,您甚至无法编译使用它的代码。您可以尝试导入dll而不是tlb吗?
proc A(Dummy: bool):bool;