안타깝게도 파일 매핑에는 한 가지 중요한 단점이 있습니다. 자식 애플리케이션(데이터 읽기)이 어떤 이유로 작업을 올바르게 완료하지 못한 경우 ( kernel32 ::UnmapViewOfFile 및 kernel32::CloseHandle 호출) , "파일"은 열린 위치의 모든 프로세스가 닫힐 때까지 (kernel32::OpenFileMappingW 및 kernel32::MapViewOfFile 호출) 메모리에 매달린 상태로 남아있을 수 있습니다. 특히 크기를 변경할 수 없으며 다시 열 수 없습니다(닫았다가 다시 열기).
문제에 대한 해결책을찾지 못했습니다. 이 라이브러리의 모든 작업은 여는 것으로 시작하여 닫는 것으로 끝나기 때문에 이러한 상황이 발생하기 어렵습니다. 이것이 느린 이유입니다. 그러나 여전히이 오류가 발생할 수 있습니다. 그러면 MQL 프로그램이이 메시지와 함께 충돌합니다.
поэтому он должен оценить x и ввести значение в ST2 для структуризации. с технической точки зрения При использовании одноуровневой индирекции ST2 x строчит имя введенного макроса но при использовании двойного слоя он строчит значение введенного макроса
이 예제 https://www.mql5.com/ko/code/818 의 작업을 확인하려고 합니다.
MT5 버전: 5.00 빌드 5370 2025년 10월 17일을 사용하고 있습니다.
어떤 이유로 memmap.mq5 파일을 컴파일하려고 할 때 오류가 발생합니다:
memmap.mq5
MemMapLib.mqh
wrong parameters count, 4 passed, but 3 requires MemMapLib.mqh 2799
long CMemMapFile::Open(string,int,int) MemMapLib.mqh 25119
call resolves to 'long CMemMapFile::Open(string,int,int)' instead of 'long CMemMapApi::Open(string,int,int,int&)' due to new rules of method hiding MemMapLib.mqh 2799
see declaration of function 'CMemMapFile::Open' MemMapLib.mqh 25119
see declaration of function 'CMemMapApi::Open' MemMapLib.mqh 12219
wrong parameters count, 3 passed, but 1 requires MemMapLib.mqh 2929int CMemMapFile::Fill(uchar) MemMapLib.mqh 25314
call resolves to 'int CMemMapFile::Fill(uchar)' instead of 'int CMemMapApi::Fill(long,uchar,int&)' due to new rules of method hiding MemMapLib.mqh 2929
see declaration of function 'CMemMapFile::Fill' MemMapLib.mqh 25314
see declaration of function 'CMemMapApi::Fill' MemMapLib.mqh 12414
wrong parameters count, 4 passed, but 1 requires MemMapLib.mqh 29916int CMemMapFile::Grows(int) MemMapLib.mqh 25514
call resolves to 'int CMemMapFile::Grows(int)' instead of 'long CMemMapApi::Grows(long,string,int,int&)' due to new rules of method hiding MemMapLib.mqh 29916
see declaration of function 'CMemMapFile::Grows' MemMapLib.mqh 25514
see declaration of function 'CMemMapApi::Grows' MemMapLib.mqh 125193 errors, 3 warnings 33
엄청난 양의 데이터(기가바이트)를 전송해야 했습니다. 안타깝게도 이 라이브러리를 통한 구현은 매우 낮은 성능을 보였습니다.
원본 DLL 세트를 사용하여 완전히 다시 실행해야 했습니다. 빠르게 작동했습니다.
안타깝게도 파일 매핑에는 한 가지 중요한 단점이 있습니다. 자식 애플리케이션(데이터 읽기)이 어떤 이유로 작업을 올바르게 완료하지 못한 경우 ( kernel32 ::UnmapViewOfFile 및 kernel32::CloseHandle 호출) , "파일"은 열린 위치의 모든 프로세스가 닫힐 때까지 (kernel32::OpenFileMappingW 및 kernel32::MapViewOfFile 호출) 메모리에 매달린 상태로 남아있을 수 있습니다. 특히 크기를 변경할 수 없으며 다시 열 수 없습니다(닫았다가 다시 열기).
문제에 대한 해결책을찾지 못했습니다. 이 라이브러리의 모든 작업은 여는 것으로 시작하여 닫는 것으로 끝나기 때문에 이러한 상황이 발생하기 어렵습니다. 이것이 느린 이유입니다. 그러나 여전히이 오류가 발생할 수 있습니다. 그러면 MQL 프로그램이이 메시지와 함께 충돌합니다.
어떤 이유로 memmap.mq5 파일을 컴파일하려고 할 때 오류가 발생합니다:
제가 뭘 잘못하고 있는지 알려주실 수 있나요? 그리고 어떻게 고칠 수 있나요?
라이브러리 소스가 MQL5 언어의 현재 요구 사항을 충족하지 않습니다.
이를 수정할 수 있는 방법이 있나요? 아니면 모든 소스를 다시 작업해야하며 작성자 없이는 불가능합니까? 컴파일러가 여기서 3개의 오류만 생성한 것 같습니다. 수정할 수 있다면 좋을 것 같습니다.
수정할 수 있는 방법이 있나요? 아니면 모든 소스를 재 작업해야하며 작성자 없이는 불가능합니까? 컴파일러가 여기서 3 개의 오류 만 발생했다고 생각합니다. 수정할 수 있다면 좋을 것 같습니다.
그리고 여기에서 이미 코드를 직접 수정했습니다. 필요한 사람들은 그것을 사용할 수 있습니다. 전문가 어드바이저가 성공적으로 컴파일됩니다.
251 줄부터 추가했습니다: