我用这样的类写了一个共享库:
// 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()'
答案 0 :(得分:1)
我强烈怀疑你正在使用* nix链接器,并列出目标文件(编译器/链接为client.o
然后lib.so
。但不幸的是,当链接器看到客户端时。 o它已经可以看到没有C::bar
的引用,也没有为它发出任何代码。
您需要在链接命令行上的库之后的和之前使用对象组或列出client.o
两次。