Programming/Win32&MFC&COM
DLL을 dumpbin으로 볼 때 함수명 = _함수명 형태로 나올 때
psychoria
2015. 8. 12. 00:00
반응형
dumpbin이라는 명령어를 사용해서 DLL이 노출하는 함수들을 확인할 수 있습니다.
dumpbin은 일반 cmd에서는 실행되지 않습니다.
Visual Studio를 설치한 이후에 Tools 메뉴의 Visual Studio Command Prompt에서 실행합니다.
실행 방식은 다음과 같습니다.
dumpbin /exports Mydll.dll
실행했을 때 다음과 같이 숫자(서수 정보)와 함께 함수명이 출력되는 것이 정상입니다.
이렇게 표시되지 않고 함수명이 함수명 = _함수명의 형태로 출력되는 경우가 있습니다.
다음과 같이 출력되는 경우입니다.
AddFloat와 AddInteger만 표시되어야 하는데 다른 형태로 표시되고 있습니다.
이 문제의 해결 방법은 다음과 같습니다.
먼저 프로젝트 속성(Alt + F7)의 좌측 메뉴에서 Linker -> Debugging 메뉴를 선택합니다.
Generate Debug Info가 있는데 No로 변경하면 됩니다.
새롭게 컴파일을 하면 DLL의 정보가 정상적으로 출력됩니다.
이름에 _가 붙는 것은 __cdecl 호출 방식의 함수에 대한 데코레이션입니다.
__stdcall 호출 형태에서는 _가 붙고 함수명 뒤에 @와 전달되는 인자의 크기 등이 표시가 됩니다.
반응형