본문 바로가기

함수

DLL을 dumpbin으로 볼 때 함수명 = _함수명 형태로 나올 때 dumpbin이라는 명령어를 사용해서 DLL이 노출하는 함수들을 확인할 수 있습니다.dumpbin은 일반 cmd에서는 실행되지 않습니다.Visual Studio를 설치한 이후에 Tools 메뉴의 Visual Studio Command Prompt에서 실행합니다.실행 방식은 다음과 같습니다. dumpbin /exports Mydll.dll 실행했을 때 다음과 같이 숫자(서수 정보)와 함께 함수명이 출력되는 것이 정상입니다.이렇게 표시되지 않고 함수명이 함수명 = _함수명의 형태로 출력되는 경우가 있습니다.다음과 같이 출력되는 경우입니다.AddFloat와 AddInteger만 표시되어야 하는데 다른 형태로 표시되고 있습니다.이 문제의 해결 방법은 다음과 같습니다.먼저 프로젝트 속성(Alt + F7)의 좌측 .. 더보기
Calling Convention(함수 호출 규약) 함수를 호출하는데는 몇 가지 지켜야 할 약속이 있습니다.변수를 어떻게 넘겨줄 것인가, 리턴값의 반환,인수로 전달한 것을 어떻게 정리할 것인가 등이 약속되어 있어야 합니다.호출하는 함수(caller)와 호출 당하는 함수(callee) 사이에는이 약속이 지켜져야 하는 것은 당연합니다.만약 이 약속이 안 맞춰지면 거의 100% 프로그램이 죽는다고 보면 됩니다.프로그램이 실행이 되면 프로세스라 칭해지며, 메모리가 할당이 됩니다.이렇게 메모리가 할당되면 힙 영역과 스택 영역이 존재하게 되는데,힙은 낮은 번지에서 높은 번지로 자라나고,스택은 높은 번지에서 낮은 번지로 자라난다고 합니다.힙과 스택의 사이에는 자유 영역이 존재하고이 자유영역이 겹치게 되면 메모리 부족이 발생합니다.함수를 호출하면 전달되는 인자나 내부의.. 더보기