混乱しがちなのでメモ.
/* メインプログラム (C) */ extern void baby(void); int main(int argc, char *argv[]) { baby(); return 0; }
/* baby() が記述されているC++プログラム */ #include <iostream> #ifdef __cplusplus extern "C" { #endif void baby(void); #ifdef __cplusplus } #endif void baby(void) { std::cout << "baby!!" << std::endl; }
Cのプログラムはgcc,C++の方はg++でコンパイルし,最後にg++でC++のオブジェクトファイルをリンクすればOK.
間違いは,メインプログラム側のプロトタイプコールでextern "C"としちゃうこと.