簡體   English   中英

Qt Designer帶有自定義小部件插件的未定義符號

[英]Qt Designer undefined symbol with Custom Widget plugin

我正在Fedora 14下使用Qt 4.7.2。

我有一個自定義小部件的工作庫,正在嘗試將其集成到Qt Designer中。 有一個簡單的小部件基類,然后繼承了一些更復雜的小部件。 簡單的小部件可以很好地集成,但是對於更復雜的小部件我有問題。

問題出在以下事實:較復雜的對象在創建時需要特殊的結構來傳遞給他們。 所以我在插件中創建復雜小部件的代碼是:

QWidget *myPlugin::createWidget(QWidget *parent)
{
    my_struct *xyz = new my_struct;
    return new myWidget("MyWidget",xyz, parent);
}

my_struct只是一個簡單的C樣式結構,具有整數,雙精度數和數組。

然后,當我使用此插件啟動Qt Designer時,我得到:

/usr/lib64/qt4/bin/designer: symbol lookup error: /usr/lib64/qt4/plugins/designer/libMyPlugin.so: undefined symbol: _ZN8MyWidgetC1E7QStringP17my_structP7QWidget

我正在構建插件的發行版本,而不是調試版本。

我還嘗試將xyz定義為插件中的靜態類變量,然后將其地址傳遞給構造函數,但是仍然遇到相同的錯誤。

我還嘗試將xyx作為未使用的靜態類變量添加到我的簡單小部件中,但是這並沒有給出錯誤,因此錯誤似乎出自對myWidget構造函數的調用。

誰能幫我解決這個問題?


感謝Arne,

你是對的。

我將庫明確添加到插件的.pro文件中,然后它起作用了。

讓我感到困惑的是,如果沒有該庫,我該如何構建沒有錯誤的插件? 為什么我的簡單窗口小部件在沒有庫的情況下也可以工作?

該錯誤消息看起來好像鏈接程序沒有找到構造函數myWidget(QString, my_struct*, QWidget*) 您是否已將相關的源文件添加到發行版本中? 您實際上有此構造函數的定義嗎? 還可能必須交換目標文件的鏈接順序。 我過去在大型項目中已經看到了這一點,所以我不會感到驚訝。 包含定義的目標文件需要在使用該定義的文件之前聲明。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM