0

Embarcadero C++Builder 2010 でCComHeapPtrスマート ポインターを使用しようとしていますが、提供されているヘッダーのいずれにも定義が見つかりません。そして、私はこのエラーを受け取ります。

[BCC32 Error] E2451 Undefined symbol 'CComHeapPtr'

入っていませんatlbase.h(atlalloc.h完全に欠落しているようです)。

これを使用して、ItemIDListから返された を例外的に安全に解放するつもりでしたIShellFolder::ParseDisplayName

それはこのバージョンに存在しますか、それとも C++Builder は非常に古いバージョンの ATL を使用しているだけですか?

そして、自分で転がす以外に、より良い代替手段はありますか?

4

1 に答える 1

1

CComHeapPtrC++Builderに同梱されているATLのどのバージョンでも使用できません。

C ++ BuilderはATLをサポートしていますが、古いバージョンのATLをサポートしています。MicrosoftはサードパーティへのATLのライセンス供与を停止し、最新のATLはVC++固有のコンパイラ拡張機能に依存しています。C ++ Builder XEは、動作するATLファイルに付属している最後のバージョンです。C ++ Builder XE2以降は引き続きATLをサポートしますが、以前のC ++ BuilderバージョンからのATLファイルのコピーがある場合に限ります(XE2には#error、使用しようとした場合に警告するステートメントを含むスタブファイルがあります)。ActiveXは、ATL互換ではないEmbarcadero独自のDAXフレームワークを使用して正式にサポートされるようになりました。

于 2013-02-26T23:19:09.837 に答える