1

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

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

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

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

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

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

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

谢谢!

4

2 回答 2

2

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

于 2009-05-07T21:18:11.597 回答
0

它应该生成一些您可以执行的 TCoClassCreatorT<> 类型

CoHardwareCheck::Create(&hc)

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

于 2009-04-23T18:59:31.453 回答