Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/azure/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
无带C和x2B的CCOMHEAPTR+;建筑商2010?_Com_Atl_C++builder 2010 - Fatal编程技术网

无带C和x2B的CCOMHEAPTR+;建筑商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版本

我试图在Embarcadero C++Builder 2010中使用智能指针,但在提供的任何标题中都找不到该定义。我得到了这个错误

[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发行版前后添加的,是一个相对“新”的类。