编了个qt3+sqlite3的小测试程序,试验能否打开连接数据库
遇到了如下问题:
[root@localhost test-qt3-sqlite3]# make
Makefile:146: warning: overriding commands for target `.obj/mainform.o'
Makefile:135: warning: ignoring old commands for target `.obj/mainform.o'
Makefile:152: warning: overriding commands for target `.obj/moc_mainform.o'
Makefile:149: warning: ignoring old commands for target `.obj/moc_mainform.o'
Makefile:158: warning: overriding commands for target `.moc/moc_mainform.cpp'
Makefile:155: warning: ignoring old commands for target `.moc/moc_mainform.cpp'
g++ -o test-sqlite.out .obj/main.o .obj/mainform.o .obj/mainform.o .obj/moc_mainform.o .obj/moc_mainform.o -L/usr/lib/qt-3.1/lib -L/usr/X11R6/lib -L/usr/local/sqlite3/lib -lsqlite3 -lqt-mt -lXext -lX11 -lm
.obj/mainform.o(.text+0x0): In function `MainForm::MainForm[not-in-charge](QWidget*, char const*, bool, unsigned)':
.ui/mainform.cpp:29: multiple definition of `MainForm::MainForm[not-in-charge](QWidget*, char const*, bool, unsigned)'
.obj/mainform.o(.text+0x0):.ui/mainform.cpp:29: first defined here
.obj/mainform.o(.text+0x3b0): In function `MainForm::languageChange()':
.ui/mainform.cpp:57: multiple definition of `MainForm::languageChange()'
.obj/mainform.o(.text+0x3b0):.ui/mainform.cpp:57: first defined here
.obj/mainform.o(.text+0x190): In function `MainForm::MainForm[in-charge](QWidget*, char const*, bool, unsigned)':
.ui/mainform.cpp:29: multiple definition of `MainForm::MainForm[in-charge](QWidget*, char const*, bool, unsigned)'
.obj/mainform.o(.text+0x190):.ui/mainform.cpp:29: first defined here
.obj/mainform.o(.text+0x320): In function `MainForm::~MainForm [not-in-charge]()':
.ui/mainform.cpp:48: multiple definition of `MainForm::~MainForm [not-in-charge]()'
.obj/mainform.o(.text+0x320):.ui/mainform.cpp:48: first defined here
.obj/mainform.o(.text+0x350): In function `MainForm::~MainForm [in-charge]()':
.ui/mainform.cpp:48: multiple definition of `MainForm::~MainForm [in-charge]()'
.obj/mainform.o(.text+0x350):.ui/mainform.cpp:48: first defined here
.obj/mainform.o(.text+0x380): In function `MainForm::~MainForm [in-charge deleting]()':
.ui/mainform.cpp:48: multiple definition of `MainForm::~MainForm [in-charge deleting]()'
.obj/mainform.o(.text+0x380):.ui/mainform.cpp:48: first defined here
.obj/moc_mainform.o(.text+0x0): In function `MainForm::className() const':
.moc/moc_mainform.cpp:20: multiple definition of `MainForm::className() const'
.obj/moc_mainform.o(.text+0x0):.moc/moc_mainform.cpp:20: first defined here
.obj/moc_mainform.o(.data+0x0): multiple definition of `MainForm::metaObj'
.obj/moc_mainform.o(.data+0x0): first defined here
.obj/moc_mainform.o(.text+0x10): In function `MainForm::tr(char const*, char const*)':
.moc/moc_mainform.cpp:29: multiple definition of `MainForm::tr(char const*, char const*)'
.obj/moc_mainform.o(.text+0x10):.moc/moc_mainform.cpp:29: first defined here
.obj/moc_mainform.o(.text+0x80): In function `MainForm::trUtf8(char const*, char const*)':
.moc/moc_mainform.cpp:37: multiple definition of `MainForm::trUtf8(char const*,
char const*)'
.obj/moc_mainform.o(.text+0x80):.moc/moc_mainform.cpp:37: first defined here
.obj/moc_mainform.o(.text+0xf0): In function `MainForm::staticMetaObject()':
.moc/moc_mainform.cpp:48: multiple definition of `MainForm::staticMetaObject()'
.obj/moc_mainform.o(.text+0xf0):.moc/moc_mainform.cpp:48: first defined here
.obj/moc_mainform.o(.text+0x190): In function `MainForm::qt_cast(char const*)':
.moc/moc_mainform.cpp:70: multiple definition of `MainForm::qt_cast(char const*)'
.obj/moc_mainform.o(.text+0x190):.moc/moc_mainform.cpp:70: first defined here
.obj/moc_mainform.o(.text+0x200): In function `MainForm::qt_invoke(int, QUObject*)':
.moc/moc_mainform.cpp:77: multiple definition of `MainForm::qt_invoke(int, QUObject*)'
.obj/moc_mainform.o(.text+0x200):.moc/moc_mainform.cpp:77: first defined here
.obj/moc_mainform.o(.text+0x260): In function `MainForm::qt_emit(int, QUObject*)':
.moc/moc_mainform.cpp:87: multiple definition of `MainForm::qt_emit(int, QUObject*)'
.obj/moc_mainform.o(.text+0x260):.moc/moc_mainform.cpp:87: first defined here
.obj/moc_mainform.o(.text+0x290): In function `MainForm::qt_property(int, int, QVariant*)':
.moc/moc_mainform.cpp:93: multiple definition of `MainForm::qt_property(int, int, QVariant*)'
.obj/moc_mainform.o(.text+0x290):.moc/moc_mainform.cpp:93: first defined here
.obj/moc_mainform.o(.text+0x2c0): In function `MainForm::qt_static_property(QObject*, int, int, QVariant*)':
.moc/moc_mainform.cpp:97: multiple definition of `MainForm::qt_static_property(QObject*, int, int, QVariant*)'
.obj/moc_mainform.o(.text+0x2c0):.moc/moc_mainform.cpp:97: first defined here
collect2: ld returned 1 exit status
make: *** [test-sqlite.out] Error 1
源程序如下:
#include "mainform.h"
#include <qvariant.h>
#include <qlineedit.h>
#include <qpushbutton.h>
#include <qlayout.h>
#include <qtooltip.h>
#include <qwhatsthis.h>
#include <qimage.h>
#include <qpixmap.h>
/*
* Constructs a MainForm as a child of 'parent', with the
* name 'name' and widget flags set to 'f'.
*
* The dialog will by default be modeless, unless you set 'modal' to
* TRUE to construct a modal dialog.
*/
MainForm::MainForm( QWidget* parent, const char* name, bool modal, WFlags fl )
: QDialog( parent, name, modal, fl )
{
if ( !name )
setName( "MainForm" );
showMsgLineEdit = new QLineEdit( this, "showMsgLineEdit" );
showMsgLineEdit->setGeometry( QRect( 150, 230, 350, 21 ) );
openButton = new QPushButton( this, "openButton" );
openButton->setGeometry( QRect( 150, 70, 91, 30 ) );
languageChange();
resize( QSize(600, 480).expandedTo(minimumSizeHint()) );
// signals and slots connections
connect( openButton, SIGNAL( clicked() ), this, SLOT( openDBSlot() ) );
}
/*
* Destroys the object and frees any allocated resources
*/
MainForm::~MainForm()
{
// no need to delete child widgets, Qt does it all for us
}
/*
* Sets the strings of the subwidgets using the current
* language.
*/
void MainForm::languageChange()
{
setCaption( tr( "A test Showing how to connect SQLite3 in QT3" ) );
openButton->setText( tr( "Open DB" ) );
}
void MainForm::openDBSlot()
{
//qWarning( "MainForm::openDBSlot(): Not implemented yet" );
sqlite3 *db=NULL;
int rc;
rc = sqlite3_open("zieckey.db", &db); if( rc )
{
QString errMsgQString;
errMsgQString.sprintf("Can't open database: %s\n", sqlite3_errmsg(db) );
showMsgLineEdit->setText(errMsgQString);
sqlite3_close(db);
}
else
showMsgLineEdit->setText( "open zieckey.db successfully!\n" );
sqlite3_close(db); }
请问是哪里出错了?
顺便问下,在.h文件中,我加了sqlite3.h这个头文件,而sqlite3.h这个文件在其他文件夹下,我没有设置成全局的环境变量,会出问题吗?提前谢了...