1

当我在带有 mingw32 的 Windows 中构建应用程序时,我得到了未定义的引用(在 Linux 中不会发生)。申请分为两部分:

1- 一组带有 PRO 的设计器插件,例如:

QT += 核心 gui sql

CONFIG += 设计器插件 debug_and_release

目标 = $$qtLibraryTarget(impwidgetsplugin)

模板 = 库

这会生成文件: c:\ilri\crossimpact\ 中的 libimpwidgetsplugin.a 和 impwidgetsplugin.dll

2- 库中的一组插件,需要带有 PRO 的 impwidgetsplugin,例如:

QT += 核心 gui sql svg

目标 = $$qtLibraryTarget(impmainmodules) 模板 = 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 以便正确链接它吗?

非常感谢您的帮助。卡洛斯。

4

1 回答 1

1

LIBS+=-Wl,-export-all-symbols通过在插件 .pro 文件中使用,您可以拥有与 linux 几乎相同的行为。

但看起来您没有使用宏正确导出类Q_DECL_EXPORTQ_DECL_IMPORT.

于 2012-03-22T14:40:18.977 回答