私はclangでacライブラリ(c ++プロジェクトで使用される)をコンパイルしていました。このライブラリをリンクしようとすると、リンカーエラー(具体的には、hqxInit関数に関する未定義のシンボル)が発生しました。clang ++に切り替えると、機能します。nmで確認すると、clang++は名前をさらに変更します。何が起こっているのでしょうか。また、ライブラリがMunged-for-cではなくMunged-for-C ++であることをリンカーに伝えるためのより良い方法はありますか?c++でacライブラリを構築しなければならないのはばかげているようです。
//clangで構築
$ nm libhqx.a
libhqx.bak(init.c.o)
04000000 C _RGBtoYUV
00000004 C _YUV1
00000004 C _YUV2
00000000 T _hqxInit
//clang++で構築
$ nm libhqx.a
libhqx.a(init.o):
00000100 S _RGBtoYUV
04000100 S _YUV1
04000104 S _YUV2
00000000 T __Z7hqxInitv