dll을 언로드하는 방법 - 페이지 7

 

알렉세로 ,

휴가를 마치고 돌아왔습니다. 이 헤롯들이 당신을 완전히 무찌른 것을 보았습니다. 함께 적시자. :)))))))

당신의 재물을 숨기고 ,

모든 헛소리와 함께 표시기를 제거한 후 DLL을 언로드하는 문제가 실제로 존재하지만 DLL 자체 코드의 오류 유무와 관련이 없지만 개발자가 사용을 제한했다는 사실 소위 외부 라이브러리의. "합리적인 한계".

이러한 한계가 무엇인지 - 딕은 알고 있지만 더 자세히 설명하려고 하지 않았습니다. 그러나 라이브러리가 적합하지만 로드 및 언로드는 무리하게 진행됩니다.

그러나 멍한 프로그래머가 너무 열성적으로 메모리를 조작하기 시작하거나 계산을 위해 터미널에서 프로세서 시간을 소비하거나 심지어 신성한 (공포) - terminal.exe 프로그램의 메시지 대기열에서 스윙을 하면 사악한 메타 따옴표 그에게 복수할 것이다.

언로드하지 않는 dll은 꽃입니다. 나는 당신의 머리카락을 곤두서게 하는 것들을 보았습니다. 예를 들어, 표시기(여기에는 DLL 호출이 없음)가 서로의 주소 공간으로 크롤링하기 시작했습니다. 그리고 DLL에서 간단한 함수를 호출한 후에도(아무것도 하지 않는 함수라도 - 일부러 시도했습니다!) 터미널이 아무 이유 없이 MQL 프로그램의 줄을 건너뛰기 시작했습니다(!). (i=limit;i>=0;i--)에 대한 시계열 주기는 완료 후 음수 인덱스 영역으로 충돌했습니다(경고로 확실히 확인됨)!!! 무엇보다도 나를 놀라게 한 것은 terminal.exe가 특정 시간(밀리초 ) 후에 상황의 모든 코미디를 깨닫고 즉시 헛소리를 했다는 것입니다. 즉시 얽히고 설킨 할머니를 중지하고 변수 i를 기본 값 0으로 반환합니다. 아무 것도 없었습니다. 그런.

ex4 프로그램 코드 처리 오류가 수정된 후 regsvr 유틸리티가 수행하는 작업에 대해 이야기해 보겠습니다.

 
HideYourRichess >> :

다시 한 번 반복합니다. dll에는 아무 문제가 없습니다. 문제가 있는 경우 이는 프로그래밍의 문제이며 MS나 MT 모두 여기에서 비난할 가능성이 가장 큽니다. 그리고 "이전" VC를 사용해야 한다는 사실 - 어쨌든 명확해야 합니다.

재미있는 사람.

모든 것은 테스트로 결정됩니다.

.

글쎄, dll을 가져 와서 조언자에서 꺼내십시오. 제거 할 수 있다면

MT가 실행되면 당신이 영웅입니다 축하합니다!

할 수 없다면 왜 여기에 게시합니까? 누구를 위해?

Zakachiki가 당신의 제품으로 작업할 때 어떤 태도가 그들을 기다리고 있는지 알 수 있도록 하시겠습니까?

아니면 누구에게 조언을 구하지 말아야 하는지 모두가 정확히 알 수 있도록 하시겠습니까?

.

지금 생각해보니 질문을 하는 사람들은 어떤 대답을 받고 싶어-

아마도 다음과 같습니다. Exe를 만들고 동적 연결을 사용하여 DLL을 로드합니다.

GetProcAddress()를 통해 호출을 가져옵니다.

언로드 후 Exe 실행 시 DLL이 삭제되지 않으면 문제가 있는 것입니다.

이것은 발명하는 대신 실제 객관적인 결과를 얻는 것입니다.

"귀하의 프로그래밍"의 일부 "오류".

그리고 이제 이 결과에 대한 이론을 제시할 수 있습니다 :-) ...

.

여기에 있는 이론은 모두 발명된 것입니다.

그러나 이것은 정상적인 대답을 하기 위해 w%를 올리는 게으름 때문이다.

.

그리고 VBAG... 음... 브라보!

문제에 대한 설명, 특정 사용 사례, 모든 것이 갑자기 명확해졌습니다.

비록 당신이 애플리케이션 서버로 작업한다면, dll의 교체는 곧 그렇게 중요하지 않을 것입니다 :-).

.

솔직히 말해서 디버깅을 위해 파일에 *정적* 데이터가 있는 것이 좋습니다.

조언자가 데이터를 파일로 보내도록 합니다.

지난 7년 동안 저는 멀티 메가바이트 파일을 한 줄로 읽고 썼습니다. 모든 것이 매우 빠릅니다.

게다가, 탭으로 구분된 파일의 경우, 이 큰 문자열은 substr() 없이 1패스로 행렬로 변환될 수 있습니다.

(10분의 1초 안에), 줄을 나눈 다음 열로 나누는 작업이 너무 많이 작동하기 때문입니다.

천천히(몇 초 걸림). 따라서 문제가 발생하면 문제를 *보장*할 수 있습니다.

난수 생성기에 의존하지 않고 재생산합니다.

.

그리고 이 접근 방식(!)을 사용하면 테스트가 단순화됩니다. dll이 아니기 때문입니다.

실행 버튼 IN ONE CLICK이 컴파일, 링크, 실행되고 exe 자체가 필요한 데이터를 취하기 때문입니다.

.

추신: "프로그래밍" 문제만 해결할 수 있습니다...

 

MT4에서 DLL을 주의 깊게 제한된 범위에서 사용해야 한다는 이전 동지들의 의견에 동의합니다. 이것은 위의 사항과 DLL을 점진적으로 개발해야 하며 이색적이지 않다는 사실을 의미합니다. DLL은 MQL4 세미 인터프리터의 다른 사람 집에 있는 임시 게스트입니다.

2 alsu: 아파서 할 일이 없고 침대에서 똑똑한 프로젝트 를 이끌지 못하지만 가금류와 이야기하는 데 많은 정신적 노력이 필요하지 않아 뿌렸습니다. 아직 그들의 양심이 깨어나길 기다리고 있지만 아직까지는 눈에 보이지 않고 선동과 잡담뿐....

 
alsu >> :

모든 헛소리와 함께 표시기를 제거한 후 DLL을 언로드하는 문제가 실제로 존재하지만 DLL 자체 코드의 오류 유무와 관련이 없지만 개발자가 사용을 제한했다는 사실 소위 외부 라이브러리의. "합리적인 한계".

알 수 >> :

이러한 한계가 무엇인지 - 딕은 알고 있지만 더 자세히 설명하려고 하지 않았습니다. 그러나 라이브러리가 적합하지만 로드 및 언로드는 무리하게 진행됩니다.

그러나 멍한 프로그래머가 너무 열성적으로 메모리를 조작하기 시작하거나 계산을 위해 터미널에서 프로세서 시간을 소비하거나 심지어 신성한 (공포) - terminal.exe 프로그램의 메시지 대기열에서 스윙을 하면 사악한 메타 따옴표 그에게 복수할 것이다.

언로드하지 않는 dll은 꽃입니다. 나는 당신의 머리카락을 곤두서게 하는 것들을 보았습니다. 예를 들어, 표시기(여기에는 DLL 호출이 없음)가 서로의 주소 공간으로 크롤링하기 시작했습니다. 그리고 DLL에서 간단한 함수를 호출한 후에도(아무것도 하지 않는 함수라도 - 일부러 시도했습니다!) 터미널이 아무 이유 없이 MQL 프로그램의 줄을 건너뛰기 시작했습니다(!). (i=limit;i>=0;i--)에 대한 시계열 주기는 완료 후 음수 인덱스 영역으로 충돌했습니다(경고로 확실히 확인됨)!!! 무엇보다도 나를 놀라게 한 것은 터미널.exe가 몇 밀리초 후에 상황의 모든 코미디와 즉시 쓰레기를 깨닫고 얽히고 설킨 할머니를 즉시 중지하고 변수 i를 기본 값 0으로 반환한다는 것입니다. 아무 것도 없었습니다. 그런.

ex4 프로그램 코드 처리 오류가 수정된 후 regsvr 유틸리티가 수행하는 작업에 대해 이야기해 보겠습니다.

여기에서 그들이 말했듯이 바보와 함께 지옥을 깨뜨릴 수 있습니다. 즉, MQL에서 정상적인 작동 프로그램을 작성할 수 없다면 MQL이 아니라 그것이 당신의 문제입니다. C에서는 버그가 있는 dll을 작성할 수 있지만 이것이 C가 우수한 언어라는 사실을 부정하지는 않습니다. 그래서 나쁜 댄서를 위해 여기에 있습니다. 공이 당신을 방해합니다. 나는 당신의 실수에 대해 MT 또는 MS를 비난하려는 당신의 욕망을 이해합니다. 이것이 나이와 함께 사라지지 않으면 아무 것도 도움이되지 않습니다.

 
HideYourRichess >> :

여기에서 그들이 말했듯이 바보와 함께 지옥을 깨뜨릴 수 있습니다. 즉, MQL에서 정상적인 작동 프로그램을 작성할 수 없다면 MQL이 아니라 그것이 당신의 문제입니다. C에서는 버그가 있는 dll을 작성할 수 있지만 이것이 C가 우수한 언어라는 사실을 부정하지는 않습니다. 그래서 나쁜 댄서를 위해 여기에 있습니다. 공이 당신을 방해합니다. 나는 당신의 실수에 대해 MT 또는 MS를 비난하려는 당신의 욕망을 이해합니다. 이것이 나이와 함께 사라지지 않으면 아무 것도 도움이되지 않습니다.

당신의 나이에 아바타로 판단하면 끊을 것도 없고 방해할 것도 없습니다.

내 dll을 본 적이 있습니까? 그리고 왜 그들을 나쁜 말이라고 부르는가? 결함, 나는 쓰지도 않고 쓰지도 않습니다 - 나는 이것을 할 시간이 없습니다. 이 경우의 글리치는 메타 따옴표로 작성되었습니다(그런데 MS에 대해 어떠한 주장도 하지 않았습니다). 당신의 삶에서 2 + 2보다 복잡한 것을 dll에 입력하지 않았다고 해서 다른 사람들이 입력하지 않는다는 의미는 아닙니다. 2 + 2는 실패하지 않습니다

 
jartmailru >> :

재미있는 사람.

모든 것은 테스트로 결정됩니다.


나는 그것을 테스트했고 그것은 나를 위해 잘 작동합니다.


jartmailru >> :

글쎄, dll을 가져 와서 조언자에서 꺼내십시오. 제거 할 수 있다면

MT가 달리면 바로 당신이 영웅입니다 축하합니다!

할 수 없다면 왜 여기에 게시합니까? 누구를 위해?

Zakachiki가 당신의 제품으로 작업할 때 어떤 태도가 그들을 기다리고 있는지 알 수 있도록 하시겠습니까?

아니면 누구에게 조언을 구하지 말아야 하는지 모든 사람이 정확히 알 수 있도록 하시겠습니까?


"삭제 가능"은(는) 무슨 뜻인가요? 어드바이저의 dll이 제대로 작동합니다. 나는 아마 완전히 잘못된 일을하고 있습니다.

 
HideYourRichess >> :

이것은 MQL이 아니라 당신의 문제입니다

인터프리터가 버그가 없으면 코드에 있는 명령을 건너뛰지 않습니다. 여기에 있더라도!

 
HideYourRichess >> :

"제거 가능"은(는) 무슨 뜻인가요? 어드바이저의 dll이 제대로 작동합니다. 나는 아마 완전히 잘못된 일을하고 있습니다.

즉, Expert Advisor에서 특정 dll을 지정해야 합니다.

그런 다음 어드바이저를 실행하고 메타 트레이더를 종료하지 마십시오.

다음으로 가장 중요한 사용 사례는 dll을 새 것으로 교체하는 척하는 것입니다.

메타 트레이더가 실행 중일 때 이것이 실패하면 (그리고 나는 파일을 삭제하여 확인합니다) -

그래서 시스템은 dll이 사용 중이라고 생각합니다.

짜잔. Expert Advisor가 작업을 완료했지만 Dll이 언로드되지 않았습니다.

이제 DLL을 교체하려면 전체 응용 프로그램을 다시 시작해야 합니다.

 
AlexEro >> :

나 아파

H1N1;)

이미 만든 previfka

 
alsu >> :

당신의 나이에 아바타로 판단하면 끊을 것도 없고 방해할 것도 없습니다.

내 dll을 본 적이 있습니까? 그리고 왜 그들을 나쁜 말이라고 부르는가? 결함, 나는 쓰지도 않고 쓰지도 않습니다 - 나는 이것을 할 시간이 없습니다. 이 경우의 글리치는 메타 따옴표로 작성되었습니다(그런데 MS에 대해 어떠한 주장도 하지 않았습니다). 당신의 삶에서 2 + 2보다 복잡한 것을 dll에 입력하지 않았다고 해서 다른 사람들이 입력하지 않는다는 의미는 아닙니다. 2 + 2는 실패하지 않습니다


우, 무슈가 아바타를 조롱하려고 몸을 굽혔습니다. 다음 단계는 별명을 왜곡하려는 시도입니다.


이전 연설에서 무엇에 대해 이야기 했습니까? 놀란 대중에게 어떤 공포가 전해 졌습니까? 이걸 보니 - 정말 당황스럽네요. 이것을 얻으려면 매우 열심히 일해야 합니다. 따라서 dll에 대한 나쁜 말. 그러나 당신이 설명한 이러한 공포가 dll과 관련이 없다면 - 당신은 그들에 대해 무엇을 말합니까?


그런데 2+2는 무엇을 의미합니까? 이게 뭐지, 난이도의 척도? Excel에서와 같이 2 + 2와 같은 것을 스스로 구현해 보십시오. 이것이 얼마나 어려운지 놀라게 될 것입니다.