DLL이나 Lib에 함수를 어떤 방식으로 선언하고 Export하느냐에 따라서 실제로 Export되는 함수명이 달라집니다.
이 부분을 정리해보았습니다. ^^
함수 선언 방법 |
dll export 함수명 / lib의 함수명 |
|
def 파일 사용해 Export |
__declspec (dllexport) 키워드로 Export |
|
extern "C" __stdcall | Func / _Func@4 |
_Func@4 / _Func@4 |
extern "C" _cdecl | Func / _Func |
Func / _Func |
__stdcall / _cdecl (C++ Style) | Func / ?Func@@YGHXZ |
?Func@@YGHXZ / ?Func@@YGHXZ |
저 테스트 결과에 따르면... stdcall 함수를 def 파일을 사용하지 않고 (dllexport 키워드를 사용해) Export한 경우에는 extern "C" 키워드를 지정하더라도 Name Mangling이 발생하는 것을 알수 있습니다. 이 경우 GetProcAddress해서 사용하기가 어렵겠네요~~ ^^;;
'C++' 카테고리의 다른 글
파일이 수정 (삭제) 가능한 상태인지 체크하는 방법 (How to Determine a File is Writable or Deletable) (2) | 2013.07.18 |
---|---|
CreateProcessAsUser 시 ACCESS_DENIED 문제 (0) | 2013.06.13 |
서비스를 svchost에 따로 실행하기 (0) | 2011.07.27 |
IP Help API Reference Page (0) | 2011.05.02 |
File 의 변경사항을 모니터링할 수 있는 Win32 API (0) | 2011.04.22 |