問題
定義してあるはずの関数convert(color&&)がリンク時に解決されません。
問題ないように思えるのですが...
発生している問題・エラーメッセージ
clang++ main.cpp rect.cpp color.cpp ... ↓↓↓↓↓↓↓↓↓↓ Undefined symbols for architecture x86_64: "recurvis::allegw::convert(recurvis::allegw::color&&)", referenced from: recurvis::rect::draw() in rect.o
colorクラスの右辺値参照をとる関数convert(color&&)を他クラスの仮想関数draw()で呼んでます。
該当のソースコード
ソースファイル
c++
1using namespace recurvis::allegw; 2ALLEGRO_COLOR convert(const recursvis::allegw::color& c) noexcept { ~ } // オーバーロードを用意してます 3ALLEGRO_COLOR convert(recurvis::allegw::color&& c) noexcept { ~ } // この定義が解決されない
呼び出し側
c++
1auto c = allegw::convert(get_color());
試したこと
- コンパイラに渡すオブジェクトファイル群の引数順序を変えた。(最後にcolor.cpp持ってきたり)
- ファイル単位のコンパイルからnmでconvert(color&&)のシンボルを確認してます。(rect.cpp => rect.o)
g++には全てのソースファイルを生でぶち込んで1コマンドでコンパイルすませてるんですけど、この時にもリンカの解決漏れは発生するんでしょうか... ライブラリの順序が干渉するというのは聞いたことがあるので。
それとも何らかの理由でコンパイラからは隠れて見えないとか...
お手上げ状態なので頼みます????
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/02/11 08:25