Chapter 18. C 언어와의 링크 지정
Chapter 18. C 언어와의 링크 지정
‘명품 C++Programming - 황기태’ 13장 학습 내용
1절. C 코드와의 링킹
C++ 에서의 C 코드와 링킹
- 이름 규칙
- 컴파일 후 목적 코드에 이름을 붙이는 규칙
- 변수, 함수, 클래스 등의 이름
- 컴파일 후 목적 코드에 이름을 붙이는 규칙
- C 언어의 이름 규칙
- 이름 앞에 밑줄표시문자(_)를 붙임
- int f(int x, int y) -> _f
- int main() -> _main
- 이름 앞에 밑줄표시문자(_)를 붙임
- C++의 이름 규칙
- 함수의 매개 변수 타입과 개수, 리턴 타입에 따라 복잡한 이름
- int f(int x, int y) -> ?f@@YAHHH@Z
- int f(int x) -> ?f@@YAXH@Z
- int f() -> ?f@@YAHXZ
- int main() -> _main
- 함수의 매개 변수 타입과 개수, 리턴 타입에 따라 복잡한 이름
C 언어 프로그램의 컴파일과 링킹
C++ 소스의 컴파일과 링킹
C++에서 C 언어 함수 호출 시 링크 오류 발생
Visual C++ 에서의 링크 오류 메시지
2절. extern “c”
extern “c”
- extern “c”
- C 컴파일러로 컴파일할 것을 지시
- C 이름 규칙으로 목적 코드를 생성할 것을 지시
- C 컴파일러로 컴파일할 것을 지시
- 사용법
- 함수 하나만 선언
extern "C" int f(int x, int y);
- 여러 함수들 선언
extern "C"{
int f(int x, int y);
void g();
char s(int []);
}
- 헤더 파일 통째로 선언
extern "C"{
#include "myfunction.h"
}
extern “C”를 이용한 링크 성공
This post is licensed under CC BY 4.0 by the author.