无带C和x2B的CCOMHEAPTR+;建筑商2010?
我试图在Embarcadero C++Builder 2010中使用智能指针,但在提供的任何标题中都找不到该定义。我得到了这个错误无带C和x2B的CCOMHEAPTR+;建筑商2010?,com,atl,c++builder-2010,Com,Atl,C++builder 2010,我试图在Embarcadero C++Builder 2010中使用智能指针,但在提供的任何标题中都找不到该定义。我得到了这个错误 [BCC32 Error] E2451 Undefined symbol 'CComHeapPtr' 它不在atlbase.h中(而且atalloc.h似乎完全缺失) 我打算用它来异常安全地释放从IShellFolder::ParseDisplayName返回的ItemIDList 它是否存在于这个版本中,或者C++Builder只是使用了一个非常旧的ATL版本
[BCC32 Error] E2451 Undefined symbol 'CComHeapPtr'
它不在atlbase.h
中(而且atalloc.h
似乎完全缺失)
我打算用它来异常安全地释放从IShellFolder::ParseDisplayName
返回的ItemIDList
它是否存在于这个版本中,或者C++Builder只是使用了一个非常旧的ATL版本
而且,除了我自己滚,还有更好的选择吗
ccomheaptr
在C++Builder附带的任何ATL版本中都不可用
C++Builder确实支持ATL,但支持它的旧版本。微软已经停止向第三方授权ATL,最新的ATL依赖于VC++特定的编译器扩展。C++Builder XE是随工作ATL文件提供的最后一个版本。C++Builder XE2以后的版本仍然支持ATL,但前提是您拥有早期C++Builder版本的ATL文件副本(XE2具有存根文件,其中包含
#error
语句,用于在尝试使用它们时向您发出警告)。ActiveX是使用AcabCaleRo自己的DAX框架来正式支持的,它不是ATL兼容的。 C++的Builder是否有任何版本的ATL——只使用MS Visual Studio非免费版本的库?毫无疑问,ccomheaptr
是一个ATL
类。是的,它确实是。特别是ATLBASE.H(拥有MS版权),标准CComPtr
填充所有作品。它可能是一个简化版本,类似于WDK中包含的版本。我不认为ccomheaptr
一直都在ATL中,我想它是在VisualStudio2002-2003发行版前后添加的,是一个相对“新”的类。