Cannot load library : undefined symbol

在Linux下开发动态链接库,编译了一个应用程序,一个动态链接库,运行

#./test  so/libtest.so

悲哀的看到:

Cannot load library: so/libtest.so: undefined symbol: _ZTV13BaseCurveData

why?

在定义的基类中,

class BaseCurveData
{
public:
    BaseCurveData() {}
    virtual ~BaseCurveData() {}

    virtual bool GetVersionInfo(char* version);
};


GetVersionInfo没有添加任何实现,两种方法:

改为:

virtual bool GetVersionInfo(char* version) { return false; }

扫描二维码关注公众号,回复: 2971314 查看本文章

或者:

virtual bool GetVersionInfo(char* version) = 0;         //写成纯虚.

不小心把

-fPIC

写成

-fPCI

运行命令:

# nm --dynamic  --defined-only libtest.so

查看所有定义的接口,真是一个好命令

猜你喜欢

转载自blog.csdn.net/yudingding6197/article/details/8058673