生成Dll。文件:llib.pro , lib_global.h, lib.h, lib.cpp
lib.pro:
TARGET = lib
TEMPLATE = lib
DEFINES += LIB_LIBRARY
SOURCES += lib.cpp
HEADERS += lib.h\
lib_global.h
lib.h:
#ifndef LIB_H
#define LIB_H
#include <QMainWindow>
#include "lib_global.h"
class LIBSHARED_EXPORT MainWindow : public QMainWindow {
public:
MainWindow(QWidget *parent = 0);
};
#endif // LIB_H
lib.cpp:
#include "lib.h"
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
{
}
lib_global.h:
#ifndef LIB_GLOBAL_H
#define LIB_GLOBAL_H
#include <QtCore/qglobal.h>
#if defined(LIB_LIBRARY)
# define LIBSHARED_EXPORT Q_DECL_EXPORT
#else
# define LIBSHARED_EXPORT Q_DECL_IMPORT
#endif
#endif // LIB_GLOBAL_H
生成lib.dll , lib.o , liblib.a
调用人时候:lib_use.pro , main.
lib_use.pro:
TARGET = test
TEMPLATE = app
SOURCES += main.cpp \
main.cpp
HEADERS += \
lib.h \
lib_global.h
LIBS += \
lib.dll
main.cpp:
#include <QtGui/QApplication>
#include "lib.h"
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
MainWindow w;
w.show();
return a.exec();
}
编译出现了:
Running build steps for project lib_use...
Configuration unchanged, skipping qmake step.
Starting: F:/Qt/qtcreator-1.3.83/mingw/bin/mingw32-make.exe -w
mingw32-make: Entering directory `F:/QT4/lib_use'
f:\qt\4.7.0-beta1\bin\qmake.exe -spec ..\..\Qt\4.7.0-beta1\mkspecs\win32-g++ -o Makefile lib_use.pro
mingw32-make: Leaving directory `F:/QT4/lib_use'
mingw32-make: Entering directory `F:/QT4/lib_use'
F:/Qt/qtcreator-1.3.83/mingw/bin/mingw32-make -f Makefile.Debug
mingw32-make[1]: Entering directory `F:/QT4/lib_use'
Makefile.Debug:126: warning: overriding commands for target `debug/main.o'
Makefile.Debug:122: warning: ignoring old commands for target `debug/main.o'
g++ -enable-stdcall-fixup -Wl,-enable-auto-import -Wl,-enable-runtime-pseudo-reloc -mthreads -Wl -Wl,-subsystem,windows -o debug\test.exe debug/main.o debug/main.o -L"f:\Qt\4.7.0-beta1\lib" -lmingw32 -lqtmaind -l.dll -lQtGuid4 -lQtCored4
mingw32-make[1]: Leaving directory `F:/QT4/lib_use'
mingw32-make: Leaving directory `F:/QT4/lib_use'
debug/main.o: In function `Z5qMainiPPc':
F:\QT4\lib_use/../../Qt/4.7.0-beta1/include/QtGui/../../src/gui/kernel/qwidget.h:485: multiple definition of `qMain(int, char**)'
debug/main.o:F:\QT4\lib_use/main.cpp:4: first defined here
f:/qt/qtcreator-1.3.83/mingw/bin/../lib/gcc/mingw32/4.4.0/../../../../mingw32/bin/ld.exe: cannot find -l.dll
collect2: ld returned 1 exit status
mingw32-make[1]: *** [debug\test.exe] Error 1
mingw32-make: *** [debug] Error 2
Exited with code 2.
Error while building project lib_use (target: Desktop)
When executing build step 'Make'
源码: