2012-03-22 106 views
1

在Windows中構建應用程序和使用mingw32(在Linux中不會發生這種情況)時,我收到了未定義的引用。該應用程序是分爲兩個部分:Windows中使用QT,QTcreator和mingw32未定義的引用

1-一組設計者插件與像PRO:

QT + =芯圖形SQL

CONFIG + =設計師插件debug_and_release

TARGET = $$ qtLibraryTarget(impwidgetsplugin)

TEMPLATE = LIB

這將生成的文件:在C libimpwidgetsplugin.a和impwidgetsplugin.dll:\ ILRI \ crossimpact \

2-一組在庫中的插件要求impwidgetsplugin使用類似PRO:

QT + =芯圖形SQL SVG

TARGET = $$ qtLibraryTarget(impmainmodules)TEMPLATE = LIB CONFIG + = 插件

的win32:LIBS + = -Lc:/ ILRI/crossimpact -limpwidgetsplugin

....

的問題是,我總是得到:

./release\plots.o:plots.cpp:(.text+0x13f5): undefined reference to `calcDialog::calcDialog(QWidget*)' 

calcDialog在impwidgetsplugin定義。

我可以看到make參數有所需的庫limpwidgetsplugin:

g++ -enable-stdcall-fixup -Wl,-enable-auto-import -Wl,-enable-runtime-pseudo-reloc -Wl,-s -mthreads -Wl -shared -Wl,--out-implib,..\..\..\libimpmainmodules.a -o ..\..\..\impmainmodules.dll object_script.impmainmodules.Release -L"c:\Qt\2010.03\qt\lib" -Lc:/ilri/crossimpact -limpwidgetsplugin -lQtSvg4 -lQtSql4 -lQtGui4 -lQtCore4 

任何想法,我需要怎麼配置PRO所以正確的鏈接呢?

非常感謝您的幫助。 卡洛斯。

回答

1

通過在插件.pro文件中使用LIBS+=-Wl,-export-all-symbols,您可以具有與linux幾乎相同的行爲。

但它看起來像你沒有正確導出類與宏Q_DECL_EXPORT and Q_DECL_IMPORT

+0

是的!這是問題!非常感謝你。 – QLands 2012-03-23 09:05:36