"10분 안에 MQL5용 DLL 라이브러리를 작성하고 데이터를 교환하는 방법" 기사에 대한 토론 - 페이지 5

 
mql5 писал(а) :

1) 터미널 버전이 32비트인지 64비트인지?

2) 32비트 또는 64비트 버전의 dll은 무엇입니까?

1) 선택은 무엇입니까? 제 생각에는 x86 만 여기에서 다운로드됩니다 ...

2) DLL 32

 

MT5를 다시 설치하면 다음과 같은 결과가 나타납니다. 스크립트가 실행되면 로그에 다음 정보가 나타납니다. 'MQL5DLLSamples.dll'에서 fnCalculateSpeed 함수 를 찾을 수 없습니다.

만일을 대비하여 Dependency Walker 의 라이브러리 스냅샷을 첨부하겠습니다.

 
denkir :

MT5를 다시 설치하면 다음과 같은 결과가 나타납니다. 스크립트가 실행되면 로그에 다음 정보가 나타납니다. 'MQL5DLLSamples.dll'에서 fnCalculateSpeed 함수를 찾을 수 없습니다.

만일을 대비하여 Dependency Walker 의 라이브러리 스냅샷을 첨부하겠습니다.

  

재설치 된 터미널 의 빌드 번호 는 무엇입니까?
 
stringo :
재설치 된 터미널 의 빌드 번호 는 무엇입니까?
분명히 오래된 240 빌드가 아닙니다.
 
Renat писал(а) :
분명히 오래된 240 빌드가 아닙니다.

예, 확실히 마지막이 아닙니다 ...

240번째 빌드로 업데이트한 후 스크립트의 첫 번째 실행이 제대로 작동했습니다. 나는 기뻐했다. 그러나 후속 발사는 충돌로 이어졌습니다. MT 4는 병렬로 작동했습니다.

 

재부팅 후 모든 것이 작동하는 것 같았습니다! :-))

fnCrashTest(int arr) 함수를 주석 처리했습니다.

도와주신 모든 분들께 감사드립니다!

 
일반적으로 dll을 사용하여 계산 속도를 2.5배 이상 높이지 못했습니다. 이것은 MQL5의 빠른 속도를 말하며 대부분의 거래 작업에서 코드를 보호해야 하고 "무거운" 계산이 필요한 경우를 제외하고는 dll을 어지럽히는 것은 의미가 없습니다.
 
joo :
일반적으로 dll을 사용하여 계산 속도를 2.5배 이상 높이지 못했습니다. 이것은 MQL5의 빠른 속도를 말하며, 코드를 보호해야 하고 "무거운" 계산이 필요한 경우를 제외하고 대부분의 거래 작업에서 dll을 사용하는 것은 의미가 없습니다.

최종 MQL5 레지스터 최적화는 아직 활성화되지 않았습니다 . 실행 속도 는 여전히 심각하게 증가할 것입니다.
 

Renat, 기사에 감사드립니다. 많은 분들에게 유용할 것 같아요. dll과 관련된 질문이 있습니다. (터미널 249, 에디터 248)

예시

우리는 천칭 자리 demo.dll을 가지고 있으며 하나의 기능만 가지고 있습니다.

_DLLAPI void __stdcall demo( char *stream, char *buf){ buf=stream;}

mql 스크립트 demo.mq5가 있습니다.

 #property copyright "2010, MetaQuotes Software Corp."
#property link       "http://www.mql5.com"
#property version   "1.00"

#import "demo.dll"
void demo( string s1, string &s2);
#import

void OnStart(){
   string a= "TEST" ; string b;
   demo(a,b);
   Print (b);    
}

컴파일러는 오류나 경고를 생성하지 않습니다.

터미널에서 실행하면 다음을 얻습니다.

시각적 디버그를 확인할 때 demo.dll 함수 자체가 문자열이 아니라 첫 번째 문자를 수신한다는 것도 발견했습니다.

문제

문제가 무엇입니까? MQL에서 dll로 문자열을 인간적으로 전달하는 방법은 무엇입니까?

 
사용   char 대신 wchar_t