首页 > 解决方案 > G4GMLParser 评估器:语法错误 C++

问题描述

我正在尝试使用 G4GDMLParser 读取 GDML 文件:

...
G4GDMLParser parser;    
parser.Read(G4Str_Filename, fValidate);

但它给出了一个错误:

  ...
    G4GDML: Reading materials...
    G4GDML: Reading solids...
    Evaluator : syntax error
    
    -------- EEEE ------- G4Exception-START -------- EEEE -------
    *** G4Exception : InvalidExpression
          issued by : G4GDMLEvaluator::Evaluate()
    Error in expression: 40.0
    *** Fatal Exception *** core dump ***
     **** Track information is not available at this moment
     **** Step information is not available at this moment
    
    -------- EEEE -------- G4Exception-END --------- EEEE -------
    
    
    *** G4Exception: Aborting execution ***
    Signal: SIGABRT (Aborted)

我尝试将 GDML 文件放在可执行文件旁边,但没有帮助。

标签: c++filesimulationgeant4

解决方案


我发现问题是我的语言环境 TR 使用 " , "不是 " . " 用于浮点数,只需在代码中的某个位置设置您的语言环境;

std::setlocale(LC_ALL, "en_US.UTF-8");
std::setlocale(LC_NUMERIC, "en_US.UTF-8");

推荐阅读