OS X Mavericks と XCode 5.0.1 に移行したので、コンパイル済みの C ファイル (gcc からの出力) を C++ プロジェクト (g++ からの出力) に正常にリンクできなくなりました。
私のmakefileから生成された問題のあるコマンドのペアは次のとおりです。
gcc `pkg-config --cflags glib-2.0` -g -Wall -O3 `pkg-config --cflags flann` -c -o vec.o vec.c
g++ `pkg-config --cflags glib-2.0` -g -Wall -O3 -stdlib=libstdc++ -lstdc++ layoutquality.cpp vec.o `pkg-config --libs glib-2.0` -L/usr/local/Cellar/flann/1.8.4/lib -lflann -o layoutquality
リンカーが不平を言う:
アーキテクチャ x86_64 の未定義のシンボル: "load_dmat(char const*)"、参照元: _main in layoutquality-I8HOqy.o ld: アーキテクチャ x86_64 のシンボルが見つかりません
ファイルvec.cload_dmat
内の単なる関数です。最初の行でを に置き換えるgcc
とg++
、すべてが正常にコンパイルおよびリンクされますが、clang は次のように述べています。
clang: 警告: C++ モードでは 'c' 入力を 'c++' として扱います。この動作は非推奨です
これらをコンパイルしてリンクする、攻撃的で非推奨の方法はありますか? OS X Mavericks と新しいコマンド ライン ツールにアップグレードする前にg++
、オブジェクト ファイルとのリンクは正常に機能していました。gcc
何が変わったのか、どのように前進するのかについての洞察は素晴らしいでしょう、ありがとう。