MT4: DLL 가져오기 오류 잡기
결과 1 - 9 / 9

실: MT4: DLL 가져오기 오류 잡기

  1. #1
    안녕,

    작은 질문입니다. 여러분 중 한 분은 알고 계실 것입니다.

    mqh 헤더 파일과 같은 것이 있으면.

    PHP 코드: <code><span style=”color: #000000”> <span style=”color: #0000BB”></span><span style=”color: #FF8000”>#import”xxx.dll”
    </span><span style=”color: #0000BB”>voidyyy</span><span style=”color: #007700”>();
    </span><span style= ”color: #FF8000”>#import
    </span><span style=”color: #0000BB”></span> </span> </code> 및 xxx.dll을 찾을 수 없습니다 I 로그에 오류가 발생합니다.

    라이브러리 'xxx.dll'을 로드할 수 없습니다(오류 126).

    이러한 오류를 로그 파일에 기록하는 대신 Alert 또는 MessageBox로 표시하는 쉬운 방법은 누구나 알고 있습니다.


    감사

  2. #2
    EA Indior의 데모 계정에서도 동일한 문제가 발생합니다. 전문가를 확인할 때 xxxx .dll(126)을 로드할 수 없다는 오류가 발생합니다. 적은 비용으로 이 문제를 해결할 수 있다고 생각하는 사람이 있습니까? 파일이 mql4이지만 dll이 아니므로 EA Indior의 소스 코드에 액세스할 수 있습니다.

  3. #3

    Quote 원래에 의해 게시 됨 ;
    어쨌든 EA가 완료되면 MT4가 모든 Dll 핸들을 해제하는 데 의존할 수 없다는 점을 지적해야 하지만
    이 버그는 egy 테스터에서 EA를 실행할 때만 발생합니다. 거기에서 egy 테스트가 종료된 후 #import로 로드된 dll을 FreeLibrary()하는 것을 잊어버립니다. 테스터를 실행할 때마다 참조 횟수가 1씩 증가합니다. Deinit()에서 IsTesting() 및 수동으로 FreeLibrary()를 한 번 더 사용하여 이 문제를 해결할 수 있습니다. (라이브 차트에서) 정상 작동 중에는 항상 올바르게 로드된 항목(#import로)을 해제합니다. 위의 모든 내용은 #import에만 해당됩니다. 코드에 추가 LoadLibrary()가 있는 경우 물론 FreeLibrary()에 대한 동일한 양의 호출이 필요합니다.

  4. #4
    대단히 감사합니다. 시도해 보겠습니다.

  5. #5
    도!
    물론 IsDllsAllowed() 함수는 그 작은 문제를 다룹니다!

  6. #6
    괜찮아요. DLL 호출 허용 상자가 선택되지 않은 경우 어떻게 될지 잘 모르겠습니다. DLL 파일이 존재하더라도 LoadLibrary()를 호출하면 0이 반환될 것이라고 생각합니다. 이 경우 WinAPI 함수 FileOpen() 또는 FindFirst()를 사용하여 DLL 파일이 있는지 확인할 수 있습니다. 두 경우 중 하나를 '경고'할 수 있습니다. 1) DLL이 있지만 열 수 없음 - 제안 DLL 허용이 선택 취소되었습니다. 2) DLL 파일이 없습니다.

  7. #7
    약간의 작업 없이는... Kernel32.dll에 있는 LoadLibrary FreeLibrary를 사용해 보십시오. 그러면 Init() int hmod = LoadLibrary(c:MT4LibraryDirxxx.dll);에서 이와 같은 작업을 수행할 수 있습니다. if (hmod != 0 ) FreeLibrary(hmod); else Alert(xxx.DLL을 로드할 수 없음); MT4가 이미 DLL을 로드했고 Windows는 응용 프로그램 인스턴스에 의해 DLL이 로드된 횟수의 카운터를 유지하기 때문에 DLL 로드를 해제해야 합니다. loadlibrary에 대한 호출을 해제하지 않으면 MT4는 EA가 종료될 때 DLL을 이동하지 않습니다. 어쨌든 EA가 완료되면 MT4가 모든 Dll 핸들을 해제하는 데 의존할 수 없다는 점을 지적해야 하지만 최소한 해야 할 일은 해야 합니다! 물론 이것은 DLL 파일이 존재하고 이것이 유효한 DLL인지 확인하는 것일 뿐이며 import 문에 정의된 함수가 실제로 존재하는지 확인하지는 않습니다. 이를 위해서는 GetProcAddress() 함수를 사용해야 합니다. 여기에서 MSDN 문서를 참조하세요.
    http://msdn.microsoft.com/en-us/libr...(v=VS.85).aspx

  8. #8

    Quote 원래에 의해 게시 됨 ;
    약간의 작업 없이는... Kernel32.dll에 있는 LoadLibrary FreeLibrary를 사용해 보십시오. 그러면 Init() int hmod = LoadLibrary(c:MT4LibraryDirxxx.dll);에서 이와 같은 작업을 수행할 수 있습니다. if (hmod != 0 ) FreeLibrary(hmod); else Alert(xxx.DLL을 로드할 수 없음); MT4가 이미 DLL을 로드했고 Windows는 응용 프로그램 인스턴스에 의해 DLL이 로드된 횟수의 카운터를 유지하기 때문에 DLL 로드를 해제해야 합니다. loadlibrary에 대한 호출을 해제하지 않으면 MT4는 다음과 같은 경우 DLL을 이동하지 않습니다.
    레인지바운드 감사합니다!

  9. #9

    Quote 원래에 의해 게시 됨 ;
    EA Indior의 데모 계정에서도 동일한 문제가 발생합니다. 전문가를 확인할 때 xxxx .dll(126)을 로드할 수 없다는 오류가 발생합니다. 적은 비용으로 이 문제를 해결할 수 있다고 생각하는 사람이 있습니까? 파일이 mql4이지만 dll이 아니므로 EA Indior의 소스 코드에 액세스할 수 있습니다.
    나는 그것을 고친 경험이 있으며 당신에게 연락처를 알려줍니다.

게시 권한

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  
쿠키 정책
쿠키 정책: koreaforex 웹사이트는 쿠키를 사용하며, 웹사이트를 사용자는 쿠키 사용에 동의하는 것입니다. 자세한 정보는 '쿠키 공개' 를 읽어주십시오.