合作伙伴使用.NET框架4在C#中创建了一个COM lib x.dll和x.tlb。他在VS中选中了“Com Interop”复选框。
然后他引用了这个Register a C#/VB.NET COM dll programmatically来创建一个注册.dll的工具。有效。 (我们的Delphi应用程序可以访问.COM对象)他用来注册的代码(来自上面的链接)是:
Assembly asm = Assembly.LoadFile (@"c:\temp\x.dll");
RegistrationServices regAsm = new RegistrationServices();
bool bResult = regAsm.RegisterAssembly(asm, AssemblyRegistrationFlags.SetCodeBase);
我们将x.tlb导入Delphi 7,创建了一个.pas文件,我们通过它调用COM库。
在Delphi中,当我们在COM库中调用一个函数时,我们收到一个错误:
...exception class EOleException with message 'Method not found: 'Void
System.Threading.Monitor.Enter(System.Object, Boolean ByRef)''. Process stopped.
我们不知道这意味着什么或如何解决它。
有什么建议吗?
答案 0 :(得分:0)
在编译C#dll时,它的目标是在框架4之前的.NET版本。
确保编译器中的设置定位到正确的平台版本。