共享库,链接错误到客户端功能

时间:2013-04-24 03:32:05

标签: c++ shared-libraries

我用这样的类写了一个共享库:

// 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()'

1 个答案:

答案 0 :(得分:1)

我强烈怀疑你正在使用* nix链接器,并列出目标文件(编译器/链接为client.o然后lib.so。但不幸的是,当链接器看到客户端时。 o它已经可以看到没有C::bar的引用,也没有为它发出任何代码。

您需要在链接命令行上的库之后的之前使用对象组或列出client.o两次。