做OSG开发出现error C2653: “osgViewer”: 不是类或命名空间名称

把以前编译好的OSG运行库解压出来到C:\,启动VS2010编写一简单Win32控制台程序运行:

// TestOSG.cpp : 定义控制台应用程序的入口点。
//
#include <osgViewer/Viewer>
#include <osgDB/ReadFile>

#include "stdafx.h"
int _tmain(int argc, _TCHAR* argv[])
{
osgViewer::Viewer viewer;
viewer.setSceneData( osgDB::readNodeFile( "cow.osg" ) );
return viewer.run();
}

按F7生成解决方案,出来一大堆错误,提示:

1>------ 已启动生成: 项目: TestOSG, 配置: Debug Win32 ------
1>生成启动时间为 2015-4-29 19:18:27。
1>InitializeBuildStatus:
1>  正在创建“Debug\TestOSG.unsuccessfulbuild”,因为已指定“AlwaysCreate”。
1>ClCompile:
1>  所有输出均为最新。
1>  TestOSG.cpp
1>c:\documents and settings\administrator\my documents\visual studio 2010\projects\testosg\testosg\testosg.cpp(3): warning C4627: “#include <osgViewer/Viewer>”: 在查找预编译头使用时跳过
1>          将指令添加到“StdAfx.h”或重新生成预编译头
1>c:\documents and settings\administrator\my documents\visual studio 2010\projects\testosg\testosg\testosg.cpp(4): warning C4627: “#include <osgDB/ReadFile>”: 在查找预编译头使用时跳过
1>          将指令添加到“StdAfx.h”或重新生成预编译头
1>c:\documents and settings\administrator\my documents\visual studio 2010\projects\testosg\testosg\testosg.cpp(9): error C2653: “osgViewer”: 不是类或命名空间名称
1>c:\documents and settings\administrator\my documents\visual studio 2010\projects\testosg\testosg\testosg.cpp(9): error C2065: “Viewer”: 未声明的标识符
1>c:\documents and settings\administrator\my documents\visual studio 2010\projects\testosg\testosg\testosg.cpp(9): error C2146: 语法错误: 缺少“;”(在标识符“viewer”的前面)
1>c:\documents and settings\administrator\my documents\visual studio 2010\projects\testosg\testosg\testosg.cpp(9): error C2065: “viewer”: 未声明的标识符
1>c:\documents and settings\administrator\my documents\visual studio 2010\projects\testosg\testosg\testosg.cpp(10): error C2065: “viewer”: 未声明的标识符
1>c:\documents and settings\administrator\my documents\visual studio 2010\projects\testosg\testosg\testosg.cpp(10): error C2228: “.setSceneData”的左边必须有类/结构/联合

等等。

经过反复折腾后发现,是

#include <osgViewer/Viewer>
#include <osgDB/ReadFile>
的位置需要和

#include "stdafx.h"

的位置更换一下,变成:

// TestOSG.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include <osgViewer/Viewer>
#include <osgDB/ReadFile>


int _tmain(int argc, _TCHAR* argv[])
{
osgViewer::Viewer viewer;
viewer.setSceneData( osgDB::readNodeFile( "cow.osg" ) );
return viewer.run();
}

就好了!


博主设置当前文章不允许评论。

没有更多推荐了,返回首页