|
C++에서 C의 함수를 호출하기 위해서는
extern "C" {
void aaaa( int bbb )
}
이렇게 해주면 C++ compiler가 aaaa라는 함수를 c의 호출형태로 사용하게 됩니다.
c++의 클래스를 디버그할 때나 어셈블리 형태로 보면
class TestClass
{
public
void aaa( int b );
};
의 경우
TestClass aa;
int c;
aa.aaa( c ); <-- 의 경우 aaa( &aa, c )의 형태처럼 호출이 됩니다.
그리고, 함수 호출시에 파라메터들을 어떻게 넘기느냐가 문제인데..
예전 C에서는 스택을 이용하는 것이 기본이었습니다.
하지만 지금 빌더 컴파일러에서도 파스칼형의 스택, C형태의 스택,
그리고, 레지스터를 통해 파라메터를 넘기는 방법 등 여러가지 방법이 있게 됩니다.
결국 어셈블리로 만들 함수를 호출하기 위해서는
위의 설명한 것처럼 extern "c"를 이용해서 C의 호출 형태를 사용한다는 것과
파라메터 넘기는 방법을 표준 C의 스택을 이용하는 방법으로 맞추어 주면
어셈블리로 만든 object화일과 C/C++을 연결할 수 있습니다.
|