オブジェクトを Qt Plugin に渡す際に問題があり、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内にあります:
plugin.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();
誰かが同様の問題を抱えているか、これを解決する方法を知っていますか? ありがとう。