2012-05-24 71 views
0

我有Windows動態庫的問題。我使用Qt/C++在Linux中編寫了一個共享小部件庫。一切都很好,我可以將每個應用程序鏈接到我的圖書館。但在Windows中,相同的代碼編譯,但任何應用程序都無法使用它。我收到了很多類型爲undefined reference to ...的鏈接器錯誤,這些錯誤都在庫中實現。Windows中的動態庫鏈接問題

我發現在Windows中,代碼的符號表默認情況下不會導出到二進制文件。我必須指定我想在最終的dll中顯示哪個函數。但我無法設法找到一種方法來做到這一點。

以下this指令,我將Q_DECL_EXPORT添加到所有類聲明。但它對我不起作用。

回答

2

您應該將MYSHAREDLIB_EXPORT添加到您的類聲明中,而不是Q_DECL_EXPORT。同樣來自你提供的鏈接,你相應的定義。

如果你添加了Q_DECL_EXPORT,你告訴編譯器在每個包含頭文件的模塊中爲該類生成代碼,而不是期望該類在另一個庫中被導出。

+0

我正在導出類,它們的代碼默認不包含在最終的二進制文件中。因爲該項目是一個小部件庫,只有插件類不是一個小部件itlelf。我應該分開小部件庫和設計器插件。謝謝 –