查看: 4781|回复: 13

osgviewerQT编译问题

[复制链接]

该用户从未签到

发表于 2010-3-18 15:34:22 | 显示全部楼层 |阅读模式
OSG的例子osgviewerQT我按照下面的步骤编译:
使用qmake生成vs的工程,进入工程后,编译出现如下的问题:
1>.\QOSGWidget.cpp(87) : error C2061: 语法错误 : 标识符“WFlags”
1>.\QOSGWidget.cpp(117) : error C2061: 语法错误 : 标识符“WFlags”
1>.\QOSGWidget.cpp(121) : error C2065: “f”: 未声明的标识符
1>.\QOSGWidget.cpp(121) : error C2065: “overrideTraits”: 未声明的标识符
1>.\QOSGWidget.cpp(132) : error C2039: “NoBackground”: 不是“Qt”的成员
1>.\QOSGWidget.cpp(132) : error C2065: “NoBackground”: 未声明的标识符
1>.\QOSGWidget.cpp(132) : error C3861: “setBackgroundMode”: 找不到标识符
1>.\QOSGWidget.cpp(292) : error C2061: 语法错误 : 标识符“WFlags”
1>.\QOSGWidget.cpp(319) : error C2061: 语法错误 : 标识符“WFlags”
1>.\QOSGWidget.cpp(347) : error C2027: 使用了未定义类型“QKeyEvent”
……
我看了程序,也定义了
#if USE_QT4
    #include <QtCore/QString>
    #include <QtCore/QTimer>
    #include <QtGui/QKeyEvent>
    #include <QtGui/QApplication>
    #include <QtGui/QtGui>
    #include <QtGui/QWidget>
    using Qt::WindowFlags;
#else
    class QWidget;
    #include <qtimer.h>
    #include <qt/qgl.h>
    #include <qapplication.h>
    #define WindowFlags WFlags
#endif

怎么还会出这样的问题?

osgviewerQT.rar

3.14 MB, 下载次数: 346, 下载积分: 威望 1

该用户从未签到

发表于 2010-3-18 15:40:57 | 显示全部楼层
您的Qt版本?

该用户从未签到

 楼主| 发表于 2010-3-18 15:49:14 | 显示全部楼层
qt是4.4.3的,osg是2.8的

该用户从未签到

发表于 2010-3-18 18:12:42 | 显示全部楼层
我下载你的源码看了
调试了,也没有调试通过,都是Qt在报错
估计是Qt的设置问题
我是在QtCretor使用OSG,调试例子是没有问题的

该用户从未签到

发表于 2010-3-18 18:56:39 | 显示全部楼层
附上我编译同过的例子把它作为一个QWidget,可以放在任何一个Qwidget小窗口里

Osg_Qt.rar

4.36 KB, 下载次数: 175, 下载积分: 威望 1

该用户从未签到

 楼主| 发表于 2010-3-19 10:22:13 | 显示全部楼层
附上我编译同过的例子把它作为一个QWidget,可以放在任何一个Qwidget小窗口里
wu_java 发表于 2010-3-18 18:56

你的这个例子我拿来编译没有问题,但是链接的时候出现了错误:
1>AdapterWidget.obj : error LNK2019: 无法解析的外部符号 "__declspec(dllimport) public: virtual __thiscall QGLWidget::~QGLWidget(void)" ([email=__imp_??1QGLWidget@@UAE@XZ]__imp_??1QGLWidget@@UAE@XZ[/email]),该符号在函数 "public: virtual __thiscall AdapterWidget::~AdapterWidget(void)" ([email=??1AdapterWidget@@UAE@XZ]??1AdapterWidget@@UAE@XZ[/email]) 中被引用
……
类似的错误有200多个,请问要在工程中添加什么lib吗?

该用户从未签到

发表于 2010-3-19 13:52:13 | 显示全部楼层
qtmaind.lib
QtCored4.lib
QtGuid4.lib
osgd.lib
osgdbd.lib
osgGAd.lib
osgViewerd.lib
osgUtild.lib
osgSimd.lib
把以上的添加到工程中

该用户从未签到

 楼主| 发表于 2010-3-19 13:59:31 | 显示全部楼层
qtmaind.lib
QtCored4.lib
QtGuid4.lib
osgd.lib
osgdbd.lib
osgGAd.lib
osgViewerd.lib
osgUtild.lib
osgSimd.lib
把以上的添加到工程中
wu_java 发表于 2010-3-19 13:52

现在还有这三个错误:
1>QOSGViewer.obj : error LNK2019: 无法解析的外部符号 "__declspec(dllimport) public: void __thiscall osg::MatrixTransform::setMatrix(class osg::Matrixf const &)" ([email=__imp_?setMatrix@MatrixTransform@osg@@QAEXABVMatrixf@2@@Z]__imp_?setMatrix@MatrixTransform@osg@@QAEXABVMatrixf@2@@Z[/email]),该符号在函数 "public: void __thiscall QOSGViewer::initSceneGraph(void)" ([email=?initSceneGraph@QOSGViewer@@QAEXXZ]?initSceneGraph@QOSGViewer@@QAEXXZ[/email]) 中被引用
1>QOSGViewer.obj : error LNK2001: 无法解析的外部符号 "public: virtual bool __thiscall osg::MatrixTransform::computeLocalToWorldMatrix(class osg::Matrixf &,class osg::NodeVisitor *)const " ([email=?computeLocalToWorldMatrix@MatrixTransform@osg@@UBE_NAAVMatrixf@2@PAVNodeVisitor@2@@Z]?computeLocalToWorldMatrix@MatrixTransform@osg@@UBE_NAAVMatrixf@2@PAVNodeVisitor@2@@Z[/email])
1>QOSGViewer.obj : error LNK2001: 无法解析的外部符号 "public: virtual bool __thiscall osg::MatrixTransform::computeWorldToLocalMatrix(class osg::Matrixf &,class osg::NodeVisitor *)const " ([email=?computeWorldToLocalMatrix@MatrixTransform@osg@@UBE_NAAVMatrixf@2@PAVNodeVisitor@2@@Z]?computeWorldToLocalMatrix@MatrixTransform@osg@@UBE_NAAVMatrixf@2@PAVNodeVisitor@2@@Z[/email])
该添加什么lib文件呢?

该用户从未签到

发表于 2010-3-19 15:33:58 | 显示全部楼层
该添加的已经添加了,楼主也不必另外发帖问这个问题;很显然您自己的设置有误,不妨详述一下您是如何配置的

该用户从未签到

 楼主| 发表于 2010-3-19 16:16:04 | 显示全部楼层
该添加的已经添加了,楼主也不必另外发帖问这个问题;很显然您自己的设置有误,不妨详述一下您是如何配置的
array 发表于 2010-3-19 15:33

我下载的wu_java 提供的例子程序,通过qmake建立了vs的工程,用vs2005打开工程文件后,添加了
osgd.lib
opengl32.lib
glu32.lib
gdi32.lib
user32.lib
d:\dev\qt-4.4.3\lib\qtmaind.lib
d:\dev\qt-4.4.3\lib\QtOpenGLd4.lib
d:\dev\qt-4.4.3\lib\QtGuid4.lib
d:\dev\qt-4.4.3\lib\QtCored4.lib
osgViewerd.lib
osgGAd.lib
osgDBd.lib
osgUtild.lib
osgSimd.lib

之后链接的时候仍然报错……
请我的问题出在哪里啊?谢谢!

该用户从未签到

发表于 2010-3-19 16:33:57 | 显示全部楼层
您可以把自己的工程作为附件粘贴上来看一看,从依赖库本身来看没什么问题(如果您是在编译Debug工程的话)。不过我不知道您自己的操作以及结果是怎样的

该用户从未签到

 楼主| 发表于 2010-3-19 17:05:03 | 显示全部楼层
您可以把自己的工程作为附件粘贴上来看一看,从依赖库本身来看没什么问题(如果您是在编译Debug工程的话)。不过我不知道您自己的操作以及结果是怎样的
array 发表于 2010-3-19 16:33

请帮我看看,谢谢! Osg_Qt.rar (2.05 MB, 下载次数: 385)

该用户从未签到

发表于 2010-3-22 08:43:06 | 显示全部楼层
我没有在您的工程里找到main函数,除此之外,需要加上OpenThreads.lib依赖以避免线程相关函数无法找到。不过没有出现您的setMatrix函数的LNK2019问题

该用户从未签到

发表于 2011-2-27 19:48:36 | 显示全部楼层
回复 5# wu_java
能发给我一个完整的例子么?带解决方案的
您需要登录后才可以回帖 登录 | 注册

本版积分规则

OSG中国官方论坛-有您OSG在中国才更好

网站简介:osgChina是国内首个三维相关技术开源社区,旨在为国内更多的技术开发人员提供最前沿的技术资讯,为更多的三维从业者提供一个学习、交流的技术平台。

联系我们

  • 工作时间:09:00--18:00
  • 反馈邮箱:1315785073@qq.com
快速回复 返回顶部 返回列表