데이터 관리를위한 다양한 클래스를 제공하는 C ++ 라이브러리가 있습니다. 라이브러리의 소스 코드가 있습니다.
라이브러리를 C 코드와 C ++ 코드와 동시에 사용할 수 있도록 C 함수 호출을 지원하도록 C ++ API를 확장하고 싶습니다.
GNU 도구 체인 (gcc, glibc 등)을 사용하고 있으므로 언어 및 아키텍처 지원이 문제가되지 않습니다.
이것이 기술적으로 불가능한 이유가 있습니까?
주의 해야 할 문제가 있습니까?
이와 관련하여 사용할 수있는 리소스, 예제 코드 및 / 또는 문서가 있습니까?
내가 알아 낸 다른 것 :
- 다음을 사용하여 C 코드에서 사용해야하는 C ++ 헤더를 래핑합니다.
#ifdef __cplusplus
extern "C" {
#endif
//
// Code goes here ...
//
#ifdef __cplusplus
} // extern "C"
#endif
- C에 포함되지 않은 별도의 헤더 파일에 "실제"C ++ 인터페이스를 유지합니다. Think PIMPL 원칙 하십시오. 여기서 하십시오.
#ifndef __cplusplus #error
여기서 물건을 사용하면 광기를 감지하는 데 도움이됩니다. - C 코드에서 이름으로 C ++ 식별자에주의
- C 및 C ++ 컴파일러간에 크기가 다른 열거 형입니다. GNU 도구 체인을 사용하는 경우 문제가되지 않지만 여전히 조심하십시오.
구조체의 경우 C가 혼동되지 않도록 다음 형식을 따르십시오.
typedef struct X { ... } X
그런 다음 C ++ 개체를 전달하기 위해 포인터를 사용합니다. C에서 X가 C ++ 개체 인 구조체 X로 선언되어야합니다.
이 모든 것은 C ++의 마법사 인 친구의 호의입니다.