今天我把qt重新编译成了静态库,用的-debug-and-release -static选项,然后我用qt creator新建了一个动态c++链接库。按照默认的设置是能够成功生成*.o文件,可我想生成dll文件,所以我在配置文件里加了“config+=dll”,但是能够成功生成debug版的dll文件,但是不能生成release版的dll文件。
下面是配置文件:
- TARGET = DynamicTest
- TEMPLATE = lib
- DEFINES += DYNAMICTEST_LIBRARY
- SOURCES += dynamictest.cpp
- HEADERS += dynamictest.h\
- DynamicTest_global.h
- CONFIG += dll
头文件:
- #ifndef DYNAMICTEST_H
- #define DYNAMICTEST_H
- #include "DynamicTest_global.h"
- #include <QtGui/QDialog>
- class DYNAMICTESTSHARED_EXPORT DynamicTest:public QDialog {
- public:
- DynamicTest(QWidget *parent=0);
- };
- #endif // DYNAMICTEST_H
源文件:
- #include "dynamictest.h"
- DynamicTest::DynamicTest(QWidget *parent):QDialog(parent)
- {
- }
下面是错误信息:
Running build steps for project DynamicTest...
Starting: c:/qt/2010.01/qt/bin/qmake.exe D:/program/qtcreator/DynamicTest/DynamicTest.pro -spec win32-g++ -r CONFIG+=release
Exited with code 0.
Starting: C:/Qt/2010.01/mingw/bin/mingw32-make.exe -w
mingw32-make: Entering directory `D:/program/qtcreator/DynamicTest'
C:/Qt/2010.01/mingw/bin/mingw32-make -f Makefile.Release
mingw32-make[1]: Entering directory `D:/program/qtcreator/DynamicTest'
g++ -enable-stdcall-fixup -Wl,-enable-auto-import -Wl,-enable-runtime-pseudo-reloc -Wl,-s -shared -mthreads -Wl -Wl,--out-implib,release\libDynamicTest.a -o release\DynamicTest.dll release/dynamictest.o -L"c:\Qt\2010.01\qt\lib" -lQtGui -lgdi32 -lcomdlg32 -loleaut32 -limm32 -lwinmm -lwinspool -lmsimg32 -lQtCore -lkernel32 -luser32 -lshell32 -luuid -lole32 -ladvapi32 -lws2_32
Creating library file: release\libDynamicTest.a
mingw32-make[1]: Leaving directory `D:/program/qtcreator/DynamicTest'
mingw32-make: Leaving directory `D:/program/qtcreator/DynamicTest'
release/dynamictest.o:dynamictest.cpp:(.text+0x24): undefined reference to `_imp___ZN7QDialogC2EP7QWidget6QFlagsIN2Qt10WindowTypeEE'
release/dynamictest.o:dynamictest.cpp:(.text+0x60): undefined reference to `_imp___ZN7QDialogC2EP7QWidget6QFlagsIN2Qt10WindowTypeEE'
release/dynamictest.o:dynamictest.cpp:(.text$_ZN11DynamicTestD1Ev[DynamicTest::~DynamicTest()]+0x17): undefined reference to `_imp___ZN7QDialogD2Ev'
release/dynamictest.o:dynamictest.cpp:(.text$_ZN11DynamicTestD0Ev[DynamicTest::~DynamicTest()]+0x1c): undefined reference to `_imp___ZN7QDialogD2Ev'
collect2: ld returned 1 exit status
mingw32-make[1]: *** [release\DynamicTest.dll] Error 1
mingw32-make: *** [release] Error 2
Exited with code 2.
Error while building project DynamicTest
When executing build step 'Make'
请各位看看是什么原因。