在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; }

或者:

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

 

不小心把

-fPIC

写成

-fPCI

 

运行命令:

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

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

Logo

更多推荐