'name mangling'에 해당되는 글 2건

  1. 2011.07.26 Visual C++에서 name mangling 16
  2. 2003.03.04 C와 C++의 name mangling 139
http://hopeis.tistory.com/123
http://blog.naver.com/muggae/50010211722

VC로 DLL 만드는 경우에 def를 사용하지 않고 extern을 사용하는 경우에 VB에서 호출이 안된다.
이런 문제가 발생하는 이유는 볼랜드의 경우에 stdcall 호출 타입인 경우에는 extern "C"를 하면 함수 이름 그대로 export가 되지만, VC의 경우에 extern "C"를 하여도 prefix와 postfix가 붙게 되어 함수 이름이 변경되어 export 된다.
볼랜드 계열만 사용하다 VC에서는 왜 제대로 안되나 싶었는데 아래 자료를 읽어보니 명확해졌다.

# function_name_with_extern_c.png from Calling conventions for different C++ compilers and operating systems

Posted by Gu Youn
,
C와 C++ name mangling 규칙이 다르므로 C++에서 C 함수를 사용하기 위해서는
아래처럼 extern "C" 를 붙여준다.

ex) extern "C" void cfunc(int);

함수가 여러개일 경우에는
extern "C"
{
   //함수들....
}
Posted by Gu Youn
,