我在 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 无法创建抽象实例 类“IHardwareCheck”。 [C++ 错误] Unit1.cpp(22): E2353 类“IHardwareCheck”是抽象的 因为 '__stdcall IHardwareCheck::IsExpress(wchar_t * *,TOLEBOOL *) = 0'。
有人知道如何摆脱这个错误吗?
谢谢!
最佳答案
不能使用 new 创建 COM 类。您需要使用 CoCreateInstance 系统调用(参见 MSDN)或 Borland 提供的一些包装器(例如 zer0_ring 提到的那个)。
关于c++ - 在 Borland C++ Builder 4 中使用 .NET DLL 时遇到问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/752828/