【发布时间】:2011-10-21 11:38:12
【问题描述】:
我正在尝试编译基于 wxWidgets 库的 GUI 程序。我得到很多对“某物”的未定义引用。我尝试在 QMake 的 LIBS 变量上手动添加一些库,但没有成功。如何在不对每个库进行硬编码的情况下将所有 wxWidgets 库添加到 QMake?下面是我的 .pro 文件。
# simple.pro
TARGET = sample
HEADERS += main.h simple.h
SOURCES += main.cpp simple.cpp
LIBS += -LC:/SourceCode/Libraries/wxWidgets2.8/lib/gcc_dll/wxmsw28_core_gcc.dll \
-LC:/SourceCode/Libraries/wxWidgets2.8/lib/gcc_dll/wxmsw28_gcc.dll \
-LC:/SourceCode/Libraries/wxWidgets2.8/lib/gcc_dll/wxmsw28_aui_gcc.dll
INCLUDEPATH += C:/SourceCode/Libraries/wxWidgets2.8/include
CONFIG += release
错误的形式是:
release/simple.o:simple.cpp:(.rdata$_ZTV6Simple[vtable for 简单]+0x320):未定义的引用 `wxFrameBase::SetStatusBar(wxStatusBar*)'
【问题讨论】:
-
您遇到了什么错误?只是好奇,但是当您似乎可以使用 Qt 时,为什么还要使用 wxWidgets?
-
错误消息示例:release/simple.o:simple.cpp:(.rdata$_ZTV6Simple[vtable for Simple]+0x320): undefined reference to `wxFrameBase::SetStatusBar(wxStatusBar*)'。这只是许多同类错误消息之一。
-
顺便说一句,您不应该尝试链接 DLL,而是链接它们相应的 .lib 文件
-
我在使用 MinGW 的 winXP SP2 上,并且有 .a 文件对应于 .dll。这样会好吗?究竟有什么区别,是否会影响无法定位的事实?
-
我不使用 MinGW,所以我不能 100% 确定,但可能值得一试。 :) 至于区别,通过一些抽象,您可以说 .lib/.a 包含有关 DLL 中可用内容以及在 DLL 中可以找到的信息。这是链接器需要的信息,但似乎丢失了。