我们得到了一个由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
答案 0 :(得分:1)
这里的最佳路线是获取源代码,显示通过COM使用C#成功使用DLL。 DLL的开发人员应该能够提供。在可以通过COM访问DLL之前,DLL可能还必须在regasm
(不 regsvr32.exe
注册,因为它将用于本机COM DLL)。与往常一样,如果没有更多的实际代码,就很难回答这些问题。