我尝试在Embarcadero C++Builder 2010中使用CComHeapPtr智能指针,但在提供的任何头文件中都找不到定义。我得到了这个错误。
[BCC32 Error] E2451 Undefined symbol 'CComHeapPtr'它不在atlbase.h中(而且atlalloc.h似乎完全缺失了)。
我打算使用它来提供从IShellFolder::ParseDisplayName返回的ItemIDList的异常安全释放。
它在这个版本中存在吗,或者C++Builder只是使用了一个令人难以置信的旧版本的ATL?
而且,除了滚动我自己的之外,还有更好的选择吗?
发布于 2013-02-27 07:19:10
C++Builder附带的任何版本的CComHeapPtr都不可用。
C++Builder确实支持ATL,但它的旧版本。微软已经停止将ATL授权给第三方,最新的ATL依赖于VC++特定的编译器扩展。ATL是工作C++Builder文件附带的最后一个版本。C++Builder XE2以后的版本仍然支持ATL,但前提是您拥有早期C++Builder版本的ATL文件的副本(XE2有存根文件,其中包含#error语句,如果您尝试使用它们,就会发出警告)。ActiveX现在正式支持使用Embarcadero自己的DAX框架,该框架与ATL不兼容。
https://stackoverflow.com/questions/15086493
复制相似问题