Для пользователей ATcl рекомендую добавить небольшой патч в ATcl.mqh (далее под катом)
Вследствии параноидальной борьбы MQ с библиотечными вызовами (с _putenv точно, а возможно и с другими), инициализация DLL не всегда проходит корректно
Для частичного обхода данной проблемы рекомендую внести коррекции в Include/ATcl/ATcl.mqh.
В конструктор ATcl::ATcl (строка 507 файла), добавить строки обрамлённые #ifdef #endif :
ATcl::ATcl(bool safe=false) { interp=ATcl_CreateInterp(safe); /* Усилиями MQ, в некоторых билдах MetaTrader инит DLL выполняется не полностью (часть функций ими запрещены) поэтому требуется коррекция при старте интерпретаторов */ #ifdef __MQL5__ Eval("if { [ info exists ::env(ATCL_HOME) ] && ${::tcl_library} == \"C:/tcl${::tcl_patchLevel}/library\" } { \n\ set errorInfo \"\" \n\ set ::tcl_library $::env(ATCL_HOME)/lib/tcl${::tcl_version} \n\ source -encoding utf-8 [ file join $::tcl_library init.tcl ] \n\ if { ! [ info exists ::env(PYTHON_HOME) ] } { \n\ set ::env(PYTHON_HOME) [ file join $::env(ATCL_HOME) \"Python\" ] \n\ } \n\ }"); #else Eval("if { [ info exists ::env(ATCL32_HOME) ] && ${::tcl_library} == \"C:/tcl${::tcl_patchLevel}/library\" } { \n\ set errorInfo \"\" \n\ set ::tcl_library $::env(ATCL32_HOME)/lib/tcl${::tcl_version} \n\ source -encoding utf-8 [ file join $::tcl_library init.tcl ] \n\ if { ! [ info exists ::env(PYTHON_HOME) ] } { \n\ set ::env(PYTHON_HOME) [ file join $::env(ATCL_HOME) \"Python\" ] \n\ } \n\ }"); #endif Set("MetaTrader(DataDir)",TerminalInfoString(TERMINAL_DATA_PATH)); Set("MetaTrader(CommonDir)",TerminalInfoString(TERMINAL_COMMONDATA_PATH)); Set("MetaTrader(TerminalPath)",TerminalInfoString(TERMINAL_PATH)); Set("MetaTrader(TerminalName)",TerminalInfoString(TERMINAL_NAME)); Set("MetaTrader(ProgramName)",MQLInfoString(MQL_PROGRAM_NAME)); Set("MetaTrader(ProgramPath)",MQLInfoString(MQL_PROGRAM_PATH)); Eval("set MetaTrader(ProgramDir) [ file dirname $MetaTrader(ProgramPath) ]");
В следующие версии ATcl этот патч обязательно войдёт, просто версию 1.10 буду выпускать не раньше чем через неделю (1.09 вчера пришлось срочно релизить)
Приношу извинения за то что ATcl засбоил на новых билдах MetaTrader