gpt4 book ai didi

c++ - 与客户端函数链接错误的共享库

转载 作者:行者123 更新时间:2023-11-28 07:39:07 24 4
gpt4 key购买 nike

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

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

我在其他地方使用了定义类为的库:

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

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

我收到错误 undefined reference to 'C::bar()'

最佳答案

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

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

关于c++ - 与客户端函数链接错误的共享库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16182889/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com