일반적으로 std C 스타일로 컴파일된 DLL 들은 DLL 뷰어(dllexp.exe)로 확인하면 아래와 같이 보이게 된다.
함수 형식은 보이지 않으며 함수 이름만 확인 할 수 있다.
하지만 VC++ 환경에서 C++ 스타일로 컴파일을한 DLL들을 아래처럼 함수 원형까지 확인할 수 있게 되는데..
이렇게 보이는 함수들은 VC++가 아닌 다른 개발언어에서 함수 어드레스를 "함수 이름"으로 불러 올수 없다..
그래도 사용할 수 있는 방법은... 아래와 같다.
DLL 뷰어 (dllexp.exe)를 실행한 후 "Undecorate C++ function names"를 체크해제
체크를 해제 하고 DLL을 불러오면 함수이름이 다르게 나오는걸 확인 할 수 있다.
이렇게 나오는 함수이름을 통해서 사용하면 된다.
예) FunTest = GetProcAddress(hDll, "?test_lib@@YAHXZ");
개발 코드상 보기에는 좋지 않다는.. 그래도 쓸수 있는게 어디겠냐만은..
- Posted
- Filed under Development/etc.