読者です 読者をやめる 読者になる 読者になる

ひつじのにっき

mhidakaのにっきです。たまに長文、気が向いたとき更新。

マングリングに気付かない

オープンソースのゲームのソースコードを色々いじってたら
CとC++を混在させる羽目になりまして。

楽勝のつもりでコード書くとリンク通らない。
外部参照 _XXX()が見つかりません。
って出るんでC++の部分でヘッダでも間違えたー。すわっ、
と慌てて調べたら
マングリングが起きてたみたいです。

C++コンパイル後の名前をフリーダムに変えすぎてCさんが関数を見つけられないみたい。


extern "C" int XXX(void);


CppのヘッダにC仕様のexternを追加するだけで万事解決。
なんとまぁ。これだけで1時間ぐらいあーだこーだしてたとおもうと頭が痛いです。
make,link,コンパイルにつよくなりたーい。