0

我正在尝试将CComHeapPtr智能指针与 Embarcadero C++Builder 2010 一起使用,但在任何提供的标头中都找不到定义。我得到这个错误。

[BCC32 Error] E2451 Undefined symbol 'CComHeapPtr'

它不在atlbase.h(并且atlalloc.h似乎完全丢失)。

我打算使用它来提供异常安全的ItemIDListIShellFolder::ParseDisplayName.

它是否存在于这个版本中,还是 C++Builder 只是使用了一个非常旧的 ATL 版本?

而且,除了自己动手,还有更好的选择吗?

4

1 回答 1

1

CComHeapPtr在 C++Builder 附带的任何 ATL 版本中均不可用。

C++Builder 确实支持 ATL,但它的旧版本。Microsoft 已停止向第三方授权 ATL,并且最新的 ATL 依赖于 VC++ 特定的编译器扩展。C++Builder XE 是附带工作 ATL 文件的最后一个版本。C++Builder XE2 及更高版本仍然支持 ATL,但前提是您拥有早期 C++Builder 版本的 ATL 文件的副本(XE2 具有存根文件,其中包含#error在您尝试使用它们时会发出警告的语句)。现在使用 Embarcadero 自己的 DAX 框架正式支持 ActiveX,该框架不兼容 ATL。

于 2013-02-26T23:19:09.837 回答