• 14065阅读
  • 2回复

Qt项目编译 [复制链接]

上一主题 下一主题
离线winxiaojiang
 

只看楼主 倒序阅读 楼主  发表于: 2010-12-02
关键词: QT4求助
刚刚学习qt,代码将就可以看懂,可是编译总出现问题,求解答,先多谢了。
1.代码都正确,但是总会出现异常

Sheet.exe 中的 0x6507b634 (QtGuid4.dll) 处最可能的异常: 0xC0000005: 读取位置 0x000000bc 时发生访问冲突
Sheet.exe 中的 0x6507b634 (QtGuid4.dll) 处未处理的异常: 0xC0000005: 读取位置 0x000000bc 时发生访问冲突


2.代码正确,出现链接错误
1>finddialog.obj : error LNK2001: 无法解析的外部符号 "public: virtual struct QMetaObject const * __thiscall FindDialog::metaObject(void)const " ([email=?metaObject@FindDialog@@UBEPBUQMetaObject@@XZ]?metaObject@FindDialog@@UBEPBUQMetaObject@@XZ[/email])
1>finddialog.obj : error LNK2001: 无法解析的外部符号 "public: virtual void * __thiscall FindDialog::qt_metacast(char const *)" (
[email=?qt_metacast@FindDialog@@UAEPAXPBD@Z]?qt_metacast@FindDialog@@UAEPAXPBD@Z[/email])
1>finddialog.obj : error LNK2001: 无法解析的外部符号 "public: virtual int __thiscall FindDialog::qt_metacall(enum QMetaObject::Call,int,void * *)" (
[email=?qt_metacall@FindDialog@@UAEHW4Call@QMetaObject@@HPAPAX@Z]?qt_metacall@FindDialog@@UAEHW4Call@QMetaObject@@HPAPAX@Z[/email])
1>finddialog.obj : error LNK2001: 无法解析的外部符号 "public: static struct QMetaObject const FindDialog::staticMetaObject" (
[email=?staticMetaObject@FindDialog@@2UQMetaObject@@B]?staticMetaObject@FindDialog@@2UQMetaObject@@B[/email])
1>finddialog.obj : error LNK2019: 无法解析的外部符号 "protected: void __thiscall FindDialog::findNext(class QString const &,enum Qt::CaseSensitivity)" (
[email=?findNext@FindDialog@@IAEXABVQString@@W4CaseSensitivity@Qt@@@Z]?findNext@FindDialog@@IAEXABVQString@@W4CaseSensitivity@Qt@@@Z[/email]),该符号在函数 "private: void __thiscall FindDialog::findClicked(void)" ([email=?findClicked@FindDialog@@AAEXXZ]?findClicked@FindDialog@@AAEXXZ[/email]) 中被引用
1>finddialog.obj : error LNK2019: 无法解析的外部符号 "protected: void __thiscall FindDialog::findPrevious(class QString const &,enum Qt::CaseSensitivity)" (
[email=?findPrevious@FindDialog@@IAEXABVQString@@W4CaseSensitivity@Qt@@@Z]?findPrevious@FindDialog@@IAEXABVQString@@W4CaseSensitivity@Qt@@@Z[/email]),该符号在函数 "private: void __thiscall FindDialog::findClicked(void)" ([email=?findClicked@FindDialog@@AAEXXZ]?findClicked@FindDialog@@AAEXXZ[/email]) 中被引用
1>gotocelldialog.obj : error LNK2001: 无法解析的外部符号 "public: virtual struct QMetaObject const * __thiscall GoToCellDialog::metaObject(void)const " (
[email=?metaObject@GoToCellDialog@@UBEPBUQMetaObject@@XZ]?metaObject@GoToCellDialog@@UBEPBUQMetaObject@@XZ[/email])
1>gotocelldialog.obj : error LNK2001: 无法解析的外部符号 "public: virtual void * __thiscall GoToCellDialog::qt_metacast(char const *)" (
[email=?qt_metacast@GoToCellDialog@@UAEPAXPBD@Z]?qt_metacast@GoToCellDialog@@UAEPAXPBD@Z[/email])
1>gotocelldialog.obj : error LNK2001: 无法解析的外部符号 "public: virtual int __thiscall GoToCellDialog::qt_metacall(enum QMetaObject::Call,int,void * *)" (
[email=?qt_metacall@GoToCellDialog@@UAEHW4Call@QMetaObject@@HPAPAX@Z]?qt_metacall@GoToCellDialog@@UAEHW4Call@QMetaObject@@HPAPAX@Z[/email])
1>mainwindow.obj : error LNK2001: 无法解析的外部符号 "public: virtual struct QMetaObject const * __thiscall MainWindow::metaObject(void)const " (
[email=?metaObject@MainWindow@@UBEPBUQMetaObject@@XZ]?metaObject@MainWindow@@UBEPBUQMetaObject@@XZ[/email])
1>mainwindow.obj : error LNK2001: 无法解析的外部符号 "public: virtual void * __thiscall MainWindow::qt_metacast(char const *)" (
[email=?qt_metacast@MainWindow@@UAEPAXPBD@Z]?qt_metacast@MainWindow@@UAEPAXPBD@Z[/email])
1>mainwindow.obj : error LNK2001: 无法解析的外部符号 "public: virtual int __thiscall MainWindow::qt_metacall(enum QMetaObject::Call,int,void * *)" (
[email=?qt_metacall@MainWindow@@UAEHW4Call@QMetaObject@@HPAPAX@Z]?qt_metacall@MainWindow@@UAEHW4Call@QMetaObject@@HPAPAX@Z[/email])
1>mainwindow.obj : error LNK2001: 无法解析的外部符号 "public: static struct QMetaObject const MainWindow::staticMetaObject" (
[email=?staticMetaObject@MainWindow@@2UQMetaObject@@B]?staticMetaObject@MainWindow@@2UQMetaObject@@B[/email])
1>mainwindow.obj : error LNK2019: 无法解析的外部符号 "public: void __thiscall SortDialog::setColumnRange(class QChar,class QChar)" (
[email=?setColumnRange@SortDialog@@QAEXVQChar@@0@Z]?setColumnRange@SortDialog@@QAEXVQChar@@0@Z[/email]),该符号在函数 "private: void __thiscall MainWindow::sort(void)" ([email=?sort@MainWindow@@AAEXXZ]?sort@MainWindow@@AAEXXZ[/email]) 中被引用
1>mainwindow.obj : error LNK2019: 无法解析的外部符号 "public: __thiscall SortDialog::SortDialog(class QWidget *)" (
[email=??0SortDialog@@QAE@PAVQWidget@@@Z]??0SortDialog@@QAE@PAVQWidget@@@Z[/email]),该符号在函数 "private: void __thiscall MainWindow::sort(void)" ([email=?sort@MainWindow@@AAEXXZ]?sort@MainWindow@@AAEXXZ[/email]) 中被引用
1>spreadsheet.obj : error LNK2001: 无法解析的外部符号 "public: virtual struct QMetaObject const * __thiscall Spreadsheet::metaObject(void)const " (
[email=?metaObject@Spreadsheet@@UBEPBUQMetaObject@@XZ]?metaObject@Spreadsheet@@UBEPBUQMetaObject@@XZ[/email])
1>spreadsheet.obj : error LNK2001: 无法解析的外部符号 "public: virtual void * __thiscall Spreadsheet::qt_metacast(char const *)" (
[email=?qt_metacast@Spreadsheet@@UAEPAXPBD@Z]?qt_metacast@Spreadsheet@@UAEPAXPBD@Z[/email])
1>spreadsheet.obj : error LNK2001: 无法解析的外部符号 "public: virtual int __thiscall Spreadsheet::qt_metacall(enum QMetaObject::Call,int,void * *)" (
[email=?qt_metacall@Spreadsheet@@UAEHW4Call@QMetaObject@@HPAPAX@Z]?qt_metacall@Spreadsheet@@UAEHW4Call@QMetaObject@@HPAPAX@Z[/email])
1>spreadsheet.obj : error LNK2001: 无法解析的外部符号 "public: static struct QMetaObject const Spreadsheet::staticMetaObject" (
[email=?staticMetaObject@Spreadsheet@@2UQMetaObject@@B]?staticMetaObject@Spreadsheet@@2UQMetaObject@@B[/email])
1>spreadsheet.obj : error LNK2019: 无法解析的外部符号 "protected: void __thiscall Spreadsheet::modified(void)" (
[email=?modified@Spreadsheet@@IAEXXZ]?modified@Spreadsheet@@IAEXXZ[/email]),该符号在函数 "private: void __thiscall Spreadsheet::somethingChanged(void)" ([email=?somethingChanged@Spreadsheet@@AAEXXZ]?somethingChanged@Spreadsheet@@AAEXXZ[/email]) 中被引用
1>D:\我的文档\Visual Studio 2008\Projects\QT\QtProject\Debug\SpreadSheet.exe : fatal error LNK1120: 20 个无法解析的外部命令
1>生成日志保存在“file://d:\我的文档\Visual Studio 2008\Projects\QT\QtProject\SpreadSheet\Debug\BuildLog.htm”
1>SpreadSheet - 21 个错误,0 个警告



到底是怎么回事啊,我都快晕了,求解答。。。。



离线dbzhang800

只看该作者 1楼 发表于: 2010-12-02
1. 这个错误已经说明了你的代码存在问题。请考虑认真检查和调试你的程序

2. 添加Q_OBJECT 后,如果没有修改过**.pro 文件,请手动运行qmake。或者清空一下中间产物重新编译
离线winxiaojiang

只看该作者 2楼 发表于: 2010-12-03
回 1楼(dbzhang800) 的帖子
请问pro变为vcproj会其他代码会有变化吗?
将源代码用add-in将pro转变为vc项目后可以运行,但直接写在vc的qt项目中却不能运行,
难道是必须要有pro文件吗?
见笑,我是菜鸟,求解答。

我用的书是C++ GUI Programming with Qt 4 。编程工具是vs2008 sp1、add-in1.1.5、qt4.7.1,代码是第三章的SpreadSheet。
快速回复
限100 字节
 
上一个 下一个