TValue::From関数を使用し、実行時パッケージをしない64ビットアプリを実行すると、AccessViolationが発生する
対象となる製品
- C++Builder 10.4.x
- C++Builder 11.0
問題
プロジェクトのオプション設定:
- ターゲットプラットホーム=Windows 64ビット
- IDEメニューの[プロジェクト]-[オプション]-[パッケージ]-[実行時パッケージ]の”実行時パッケージを使ってリンク”=false
コード例:
void __fastcall TForm1::Button1Click(TObject* Sender)
{
TValue value = TValue::From<UnicodeString>(L"テスト");
}
上記の条件でTValue::From関数を使用したプログラムををビルドし、アプリケーションを実行すると、AccessViolationが発生することがあります。
ただし、intのようなプリミティブ型では発生せず、AnsiString、UnicodeStirngなどの文字列型のテンプレートのみ発生します。
解決
こちらの症状は、C++Builderの不具合として報告されており、C++Builder 11.1で修正済みです。