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해서 사용하기가 어렵겠네요~~ ^^;;

Posted by kuaaan

댓글을 달아 주세요



사랑합니다. 편안히 잠드소서

티스토리 툴바