在Borland C ++ Builder 4中使用.NET DLL时出现问题

时间:2009-04-15 17:27:01

标签: c++ interop c++builder

我在C#.NET 2.0中创建了一个COM可调用DLL,并创建了一个TLB 来自使用.NET regasm工具的程序集。

在Borland C ++ Builder 4.0中,我转到Project-> Import Type Library->和 在那里找到我的DLL类型库,然后单击“确定”将其导入。

BCB创建了一个HardwareCheck_TLB.cpp& HardwareCheck_TLB.h文件。

在项目的cpp文件中我想使用我放的DLL:     #include“HardwareCheck_TLB.h” 在顶部。

然后在代码中,如果我尝试在代码中声明该类型的对象:     IHardwareCheck hc = new IHardwareCheck();

我收到以下编译器错误: [C ++错误] Unit1.cpp(22):E2352无法创建抽象实例 class'IHardwareCheck'。 [C ++错误] Unit1.cpp(22):E2353类'IHardwareCheck'是抽象的 因为'__stdcall IHardwareCheck :: IsExpress(wchar_t * *,TOLEBOOL) *)= 0'。

有人有任何想法如何摆脱这个错误?

谢谢!

2 个答案:

答案 0 :(得分:2)

无法使用new创建COM clasess。您需要使用CoCreateInstance系统调用(请参阅MSDN)或Borland提供的某些包装器(例如zer0_ring提到的包装器)。

答案 1 :(得分:0)

它应该生成一些TCoClassCreatorT<>你可以做的类型

CoHardwareCheck::Create(&hc)

您可能需要查看Borland随其产品分发的tlibimp.exe。我之前已经完成了这个程序,但从来没有能够生成Co类,也许你会有更好的运气。