0

次のようなクラスで共有ライブラリを作成しました。

// lib.h
class LibClass {
    template<typename T>
    static void foo () {
        T *tmp = new T();
        tmp->bar();
    }
};

そして、次のように定義されたクラスでlibを別の場所で使用しました:

//client.cpp
class C {
public:
    void bar() { cout<<"bar"<<endl; }
};

int main () {
    LibClass::foo<C>();
    return 0;
}

エラーが発生しましたundefined reference to 'C::bar()'

4

1 に答える 1

1

あなたが *nix リンカを使用していて、オブジェクト ファイルをリストしていると強く思います (コンパイラに/リンクされたasclient.oおよびlib.so.C::barそのためのコードを発行します。

リンク コマンド ラインのライブラリのclient.o後の両方で、オブジェクト グループを使用するか、2 回リストする必要があります。

于 2013-04-24T03:53:48.473 に答える