CからC++の関数を呼び出す
BINARY HACKS p65
今度は逆。
書籍中では、いきなりboostとか出てきてしまってツライので、さっきの例の逆をやってみる。
taka@ubuntu:~$ more dbg2.cpp // // dbg2.cpp // #includeextern "C" { void dbg(const char *s) { std::cout << "Log: " << s << std::endl; } } taka@ubuntu:~$ more sample2.c // // sample2.c // void dbg(const char *s); int main() { dbg("bar"); return 0; } taka@ubuntu:~$ g++ -c dbg2.cpp taka@ubuntu:~$ ls dbg2.o dbg2.o taka@ubuntu:~$ cc -c sample2.c taka@ubuntu:~$ ls sample2.o sample2.o taka@ubuntu:~$ g++ -o sample2 dbg2.o sample2.o taka@ubuntu:~$ ./sample2 Log: bar taka@ubuntu:~$
これまたあっさり動いた。
こっちもextern "C"が効いているようです。
ちなみに最後のオブジェクトファイルをリンクするところ
g++ -o sample2 dbg2.o sample2.o
をg++じゃなくて、gccでやると、大量にエラーが出ます。