본문 바로가기

Programming/Win32&MFC&COM

DLL을 dumpbin으로 볼 때 함수명 = _함수명 형태로 나올 때

반응형

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 호출 형태에서는 _가 붙고 함수명 뒤에 @와 전달되는 인자의 크기 등이 표시가 됩니다.

반응형