我们得到了一个由C#程序员编写的,编译成可用作COM对象的DLL。使用C#DLL作为COM下的Delphi
我们咨询这些开发人员以获取函数名称和语法,我们可以在注册regasm后使用它。
这是好的,但我们有更多的问题来产生更快的开发(变化),有些东西是不可理解的或不工作的。
我们使用Delphi 6专业版,并使用C#Visual Studio 2008制作的程序集(我认为)。
让我们来看看他们:
1) 我不能使用C#代码的类型库(TLB),因为我无法导入到德尔福。
其结果是:
"Hiba az OLE beállításjegyzék használata közben."
Translate ~ "Error occured on use OLE typelib/setting lib"
错误的可能来源:
一个)的Delphi 6不能导入新的COM DLL-S。
b。)我们必须强制C#生成一个更老的格式化的TLB。
我们试图用regasm重新生成TLB,但我们也得到了这个错误。
这可能是不可能的,但如果情况b。)发生,我们需要对C#开发人员说 - 如何编译DLL-s? (DLL-s不能由Delphi引入,因为它们没有自启动部分)。
2.) 有趣: 所有参数正确地转换成变体VICA亦然,但如果C#方法不具有参数,我在Delphi侧得到错误... 例如(伪):
proc A():bool;
调用A会在Delphi端产生错误。
proc A(Dummy: bool):bool;
调用A(False)工作正常。
我不知道,为什么我们得到了这个。 你对此有何评论?这是一个C#编译问题?
感谢您的帮助: DD
我很困惑你的问题的一些部分。你说这个C#dll有一个COM接口是可用的,但是你没有把它导入到delphi 6中。我不熟悉delphi,但我假设你没有导入它,你甚至不能编译代码使用它。你可以尝试导入dll而不是tlb吗? – 2011-03-30 23:10:57