c++ - 在 Borland C++ Builder 4 中使用 .NET DLL 时遇到问题

标签 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 无法创建抽象实例 类“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/

相关文章:

c# - P/Invoke、Pinning 和 KeepAlive 最佳实践

c++ - 如何解决 System.Zip.TZipFile.ExtractAll 未从 .zip 文件中提取所有数据的问题?

c++ - 插入排序 - 处理空列表

c# - 从 C# 引用 VBA 程序集时出现运行时错误

c++ - 为什么要在函数声明中给参数命名?

c# - 从 C# 调用 vb6 dll

c++ - C++ Builder XE8 上的 TEdit 输入验证

c++ - 在NTFS压缩目录中,如何读取文件压缩和未压缩的大小?

Windows 7 (64) 上的 C++ CreateProcess 错误代码 2 ("ERROR_FILE_NOT_FOUND")

c++ - 如何使用 glUniformMatrix4fv 将 4x4 变换矩阵传递和使用到 vShader 中?