[英]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.