..... 정적 클래스 멤버는 전역 수준에서 명시적으로 초기화할 필요가 없으며 프로그램이 로드될 때 자동으로 초기화됩니다. ......
클래스 코드에는 변경 사항이 없었고 이전에는 이러한 오류가 없었습니다.
//+------------------------------------------------------------------+//| Class CCanvas |//| Usage: class for working with a dynamic resource |//+------------------------------------------------------------------+class CCanvas
{
private :
uint m_style; // line style templateuint m_style_idx; // variable - current index of bit in line style templatestaticuintm_default_colors [ 9 ]; // default colorsprotected :
MT4에서 MT5로 개발을 옮기기 시작했습니다. 새 MQL에서 처음으로 DLL을 로드하는 데 문제가 발생했습니다. 잘 컴파일되지만 칠면조를 실행할 때. "dll을 열 수 없습니다" 오류. 더 이상 메시지가 없습니다. 관련 기사를 다시 읽었습니다. 필요한 곳에 모든 것을 배치한 것 같습니다. 라이브러리는 ...\Terminals\MetaTrader 5\MQL5\Libraries 디렉토리에 있습니다.
//+------------------------------------------------------------------+//| Test MySQL.mq5 |//| me |//| no |//+------------------------------------------------------------------+#property copyright"me"#property link"no"#property version"1.00"#property indicator_separate_window#import "libmysql.dll"int mysql_init( int db);
int mysql_errno( int TMYSQL);
int mysql_real_connect( int TMYSQL, string host, string user, string password, string DB, int port, int socket, int clientflag);
int mysql_real_query( int TMSQL, string query, int length);
void mysql_close( int TMSQL);
#import
int i = 0 ;
int mysql;
string query;
//+------------------------------------------------------------------+//| Custom indicator initialization function |//+------------------------------------------------------------------+intOnInit ()
{
//--- indicator buffers mappingPrint ( GetLastError ());
mysql = mysql_init(mysql);
if (mysql!= 0 ) Print ( "allocated" );
string host= "localhost" ;
string user= "root" ;
string password= "1111" ;
string DB= "fxdb" ;
int clientflag = 0 ;
int port = 3306 ;
string socket= "" ;
int res = mysql_real_connect(mysql,host,user,password,DB,port,socket,clientflag);
int err = GetLastError ();
if (res == mysql) Print ( "connected" );
elsePrint ( "error = " ,mysql, " " ,mysql_errno(mysql), " " );
//До этой строки все правильно работает.
i++;
StringConcatenate (query, "INSERT INTO " ,
//CharToStr(039),"test" ,
//CharToStr(039), " (" ,
//CharToStr(039), "ID" ,
//CharToStr(039), ", " ,
//CharToStr(039), "text" ,
//CharToStr(039), ") VALUES (" ,
CharToString ( 039 ),
DoubleToString (i, 0 ),
CharToString ( 039 ),
", " ,
CharToString ( 039 ),
"testtext" ,
CharToString ( 039 ),
")"
);
Print ( "i = " , i);
Print (query);
int length = StringLen (query);
mysql_real_query(mysql,query,length);
int myerr=mysql_errno(mysql);
if (myerr> 0 ) Print ( "error=" ,myerr); elsePrint (i, "good" );
return ( 0 );
//---return ( INIT_SUCCEEDED );
}
//+------------------------------------------------------------------+//| Custom indicator iteration function |//+------------------------------------------------------------------+intOnCalculate ( constint rates_total,
constint prev_calculated,
constdatetime &time[],
constdouble &open[],
constdouble &high[],
constdouble &low[],
constdouble &close[],
constlong &tick_volume[],
constlong &volume[],
constint &spread[])
{
//---//--- return value of prev_calculated for next callreturn (rates_total);
}
//+------------------------------------------------------------------+//| TradeTransaction function |//+------------------------------------------------------------------+voidOnTradeTransaction ( constMqlTradeTransaction & trans,
constMqlTradeRequest & request,
constMqlTradeResult & result)
{
//---
}
//+------------------------------------------------------------------+
842/64비트를 빌드합니다. 캔버스를 선언할 때:
오류:
해결되지 않은 정적 변수 'CCanvas::m_default_colors'
누구나 가지고 있는 것 같습니다.
명시적으로 초기화를 시도하십시오.
문서로 판단하면 이것은 버그입니다. https://www.mql5.com/ru/docs/basis/oop/staticmembers
..... 정적 클래스 멤버는 전역 수준에서 명시적으로 초기화할 필요가 없으며 프로그램이 로드될 때 자동으로 초기화됩니다. ......
클래스 코드에는 변경 사항이 없었고 이전에는 이러한 오류가 없었습니다.
누구나 가지고 있는 것 같습니다.
클래스 코드에는 변경 사항이 없었고 이전에는 이러한 오류가 없었습니다.
이것은 컴파일 방법입니다:
안녕하세요! 문제를 해결하는 데 도움이 됩니다.
MT4에서 MT5로 개발을 옮기기 시작했습니다. 새 MQL에서 처음으로 DLL을 로드하는 데 문제가 발생했습니다. 잘 컴파일되지만 칠면조를 실행할 때. "dll을 열 수 없습니다" 오류. 더 이상 메시지가 없습니다. 관련 기사를 다시 읽었습니다. 필요한 곳에 모든 것을 배치한 것 같습니다. 라이브러리는 ...\Terminals\MetaTrader 5\MQL5\Libraries 디렉토리에 있습니다.
이것은 컴파일 방법입니다:
예, 하지만 왜 이 모든 것이 있습니까?
클래스 생성자에서 이 배열도 새 값으로 초기화되어 제안한 값을 덮어씁니다.
일반적으로 다음과 같습니다.
오류 없이 컴파일됩니다. 그리고 개발자가 도움말에 m_default_colors 를 입력하는 의미를 설명하도록 합니다.예, 하지만 왜 이 모든 것이 있습니까?
클래스 생성자에서 이 배열도 새 값으로 초기화되어 제안한 값을 덮어씁니다.
일반적으로 다음과 같습니다.
오류 없이 컴파일됩니다. 그리고 개발자가 도움말에 m_default_colors 를 입력하는 의미를 설명하도록 합니다.글쎄, 나는 즉시 이것이 버그라고 말했다. 서비스 데스크에서 이것으로.
문서로 판단하면 이것은 버그입니다. https://www.mql5.com/ru/docs/basis/oop/staticmembers
..... 정적 클래스 멤버는 전역 수준에서 명시적으로 초기화할 필요가 없으며 프로그램이 로드될 때 자동으로 초기화됩니다. ......
내 제안의 나머지 부분은 이 버그가 있는 상태에서 프로그램을 실행하는 것입니다. 중간 초기화는 이러한 기능을 수행하므로 버그가 수정될 때까지 기다리지 않고 작업할 수 있습니다.
이것은 그러한 상황에서 나의 행동의 전형적인 계획입니다 .
MetaDriver :
중간 초기화는 이러한 기능을 수행하므로 버그가 수정될 때까지 기다리지 않고 작업할 수 있습니다.
이것은 그러한 상황에서 나의 행동의 전형적인 계획입니다 .
그리고 내 행동도. 고맙습니다.
그리고 서비스 데스크는 이 스레드를 읽고 다시 읽어서 수정합니다.
Al_key :
"dll을 열 수 없습니다" 오류. 더 이상 메시지가 없습니다.
DLL의 터미널을 찾을 수 없습니다.
복사 경로는 네비게이터에서 MQL5 폴더의 속성을 취하여 MetaEditor를 통해 볼 수 있으며 경로는 "Location" 열에 지정됩니다. 그런 다음 DLL을 [경로]\MQL5\Libraries\ 폴더에 복사합니다.
친애하는 관리, 메타 인용 DEMO 서버와 관련된 것
일지에 쓰기: 2013.08.01 11:58:35 회로망 '1449777': MetaQuotes-Demo에 대한 연결이 끊어졌습니다.
DLL의 터미널을 찾을 수 없습니다.
복사 경로는 네비게이터에서 MQL5 폴더의 속성을 취하여 MetaEditor를 통해 볼 수 있으며 경로는 "Location" 열에 지정됩니다. 그런 다음 DLL을 [경로]\MQL5\Libraries\ 폴더에 복사합니다.
예, 하지만 제가 쓴 것처럼 이미 libmysql [경로]\MQL5\Libraries\를 복사했습니다.
메타 편집기로 이동하여 MQL5 폴더의 속성을 열면 일반적으로 내 터미널의 폴더와 연결되지 않은 일종의 경로가 있습니다. 지금은 항상 이렇습니까 아니면 조정할 수 있습니까? 네, 그건 그렇고, 모든 것을 복사했습니다. 여전히 같은 오류입니다.
그래서, 게시물의 새로운 편집. 모든 것이 작동하는 것 같고 다른 많은 오류가 있습니다. 이제 알아낼 것입니다. 그러나 칠면조와 고문 및 기타 데이터에 대한 표준 폴더를 만드는 방법. /portable 키가 도움이 되나요?