2013.04.01 00:03:49 _tradeBuySell_mt4 GBPCHF,H1: -unknow err(0) h=0
2013.04.01 00:03:49 _tradeBuySell_mt4 GBPCHF,H1: function 'MemOpen' call from dll 'MemMap32.dll' critical error c0000005 at 666013E6.
다음은 코드입니다.
#include <stdlib.mqh>#define modeOpen 0// 열기 플래그#define modeCreate 1// 생성 플래그#import "MemMap32.dll"int MemOpen(string path,int size,int mode,int &err); // 메모리에서 파일 열기/생성, 핸들 가져오기void MemClose(int hmem); // 메모리에서 파일을 닫습니다.int MemGrows(int hmem,string path,int newsize,int &err); // 메모리에서 파일 크기 늘리기int MemWrite(int hmem,int &v[], int pos, int sz, int &err); // 지정된 위치 pos, 크기 sz에서 int(4) 벡터 v를 메모리에 쓰기int MemRead(int hmem, int &v[], int pos, int sz, int &err); // 지정된 위치 pos에서 크기 sz로 벡터 v를 읽습니다.#importint hmem,err; // string file; // 메모리에 있는 파일 이름int init()
{
file="Local\\123"; // 메모리에 있는 파일 이름
hmem=MemOpen(file,-1,modeOpen,err); // 기존 파일 열기if(hmem>0) // 열면
{
Print("open OK h="+hmem);
}
elseif(err==-2) // 열지 않은 경우,
{
Print("-err("+err+") memfile not found.");
}
else
{
Print("-unknow err("+err+") h="+hmem);
return(0);
}
Print("OK ("+err+") h="+hmem);
return(0);
}
OK 1 01:10:31 tradeBuySell 'D:\MT5******\MQL5\Libraries\MemMap32.dll' is not 64-bit version
JF 1 01:10:37 tradeBuySell (GBPUSD,H1) Cannot load 'D:\******\MQL5\Libraries\MemMap32.dll'
x64 버전의 터미널 mt5가 서버에 자동으로 설치됩니다.
노트북에 Win7x64가 설치되어 있지만 일반 32비트 버전의 터미널이 있는데 x64로 업데이트하려고 시도하지 않습니다.
1) 서버만 메모리를 수정할 권한이 있습니다. 클라이언트는 메모리를 읽습니다.
2) -파이프를 보세요. 데이터 도착의 "이벤트"는 자명하게 구현되어 있습니다 - 데이터가 있고, 우리는 그것을 가져오고, 기다립니다.
3)예, 서버를 작성하거나 MSDN에서 복사해야하지만 기성품 클라이언트는 MQL5에서 직접 사용할 수 있습니다.
4) 불행히도 폴링 주기성으로이 문제를 해결할 수 없습니다. Sleep (1)은 메모리 작업시에도 소음을 내지 않아야합니다. 기능의 타이밍을 확인해야하며 어딘가에 추가 패스와로드가있을 수 있습니다.
1-서버 만 (귀하의 개발에서 저에게 작성)
2-흥미롭게도, 나는 데이터 4 (8) 바이트, 즉 전체주기를 전송하는 "가능한 한시기 적절한"작업 만 볼 것입니다 (매우 자주 수행해야 함).
3-나는 기사와 유추하여 나 자신을 만들 것이라고 생각하지만 지금까지는 테스트 예제조차도 문제가 작동하지 않습니다.
4-예, 코드를 최적화 한 몇 가지를 다시 작성했는데 더 나은 것 같습니다.
mt4에 dll을 추가하려고 했습니다.
다음은 코드입니다.드라이버를 오른쪽으로 돌립니다.
드라이버를 올바르게 돌리세요 .
링크의 예제에서는 MemMap.dll을 사용합니다.
멤맵32.dll이 아니라 멤맵32.dll입니다.
mt5에서는 작동하지만 mt4에서는 파일을 찾지 못합니다.
처음에 잘못 선언된 오류는 배열이어야 합니다.
x64 버전의 터미널 mt5가 서버에 자동으로 설치됩니다.
노트북에 Win7x64가 설치되어 있지만 일반 32비트 버전의 터미널이 있는데 x64로 업데이트하려고 시도하지 않습니다.