動作確認
C++ Builder XE4
UnityでTDictionaryの存在を知り、それをC++ Builderでも使おうかと考えた。
XE4のヘルプを見ながら実装したところ、以下のエラーが出た。
#include <System.Generics.Collections.hpp> // for TDictionary
...
void __fastcall TForm1::Button2Click(TObject *Sender)
{
TDictionary__2<String, String> *dic = new TDictionary__2<String, String>(0);
dic->Add(L"0d", L"CR");
dic->Add(L"0a", L"LF");
}
エラー
[ilink32 エラー] Error: 未解決の外部シンボル '__fastcall System::Generics::Collections::TDictionary__2<System::UnicodeString, System::UnicodeString>::TDictionary__2<System::UnicodeString, System::UnicodeString>(int)' が D:\TOOLS\XE4\XXXX_HMRZ1CSVVIEWER\WIN32\DEBUG\MAIN.OBJ から参照されています
[ilink32 エラー] Error: 未解決の外部シンボル '__fastcall System::Generics::Collections::TDictionary__2<System::UnicodeString, System::UnicodeString>::Add(const System::UnicodeString, const System::UnicodeString)' が D:\TOOLS\XE4\XXXX_HMRZ1CSVVIEWER\WIN32\DEBUG\MAIN.OBJ から参照されています
[ilink32 エラー] Error: リンクを実行できません
以下において、解決方法が掲示されている。
http://www.gesource.jp/weblog/?p=5949
一方で、
http://stackoverflow.com/questions/10611606/use-tdictionary-in-c-builder-xe2
For C++ code, you should use an STL std::map instead:
というコメントもあるようだ。
mapを使うことにした。