我在将对象传递给 Qt 插件时遇到问题,当尝试使用 const 成员函数获取其成员时,出现符号查找错误。例子:
这是在 Qt 应用程序内部:
class A{
int a,b,c;
};
class B{
public:
const QList<A*>* a() const { return m_a; }
private:
QList<A*>* m_a;
};
class C{
public:
const B* b() const { return m_b; }
private:
B* m_b;
};
这是在 QtPlugin 里面:
插件.h
#include "a.h"
#include "b.h"
#include "c.h"
//....
插件.cpp
void Plugin::somefunc(C* c)
{
qDebug() << c->b()->a()->count();
}
如果我从插件的 Qt 应用程序 somefunc() 调用,我会收到符号查找错误:
symbol lookup error ... plugin.so undefined symbol _ZNK5b6a
但如果我将 B 和 C 类成员放入公共领域,它可以使用:
qDebug() << c->m_b->m_a->count();
有没有人有类似的问题或知道如何解决这个问题?谢谢。