求救: #include 出错的问题

林悠居士 2011-04-14 01:48:13
请高手们帮帮忙。
最近在搞Scons自动编译。编译的程序是同事们使用Qt及OSG在VS2005的环境下写的。
调试时一切正常,生成的Release版应用程序时也一切正常。
但使用Scons调试时出了一堆错误。
错误如下:
C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\include\GL/gl.h(1152) : error C2144: syntax error : 'void' should be preceded by ';'
C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\include\GL/gl.h(1152) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-in
t
C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\include\GL/gl.h(1152) : error C2146: syntax error : missing ';' before identifier 'glAccum'
C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\include\GL/gl.h(1152) : error C2182: 'APIENTRY' : illegal use of type 'void'
C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\include\GL/gl.h(1152) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-in
t
C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\include\GL/gl.h(1153) : error C2144: syntax error : 'void' should be preceded by ';'
C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\include\GL/gl.h(1153) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-in
t
C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\include\GL/gl.h(1153) : error C2086: 'int WINGDIAPI' : redefinition
C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\include\GL/gl.h(1152) : see declaration of 'WINGDIAPI'
C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\include\GL/gl.h(1153) : error C2146: syntax error : missing ';' before identifier 'glAlphaFunc'
C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\include\GL/gl.h(1153) : error C2182: 'APIENTRY' : illegal use of type 'void'
C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\include\GL/gl.h(1153) : error C2086: 'int APIENTRY' : redefinition
C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\include\GL/gl.h(1152) : see declaration of 'APIENTRY'
C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\include\GL/gl.h(1153) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-in
t
C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\include\GL/gl.h(1154) : error C2146: syntax error : missing ';' before identifier 'GLboolean'
C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\include\GL/gl.h(1154) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-in
t
C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\include\GL/gl.h(1154) : error C2086: 'int WINGDIAPI' : redefinition
C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\include\GL/gl.h(1152) : see declaration of 'WINGDIAPI'
C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\include\GL/gl.h(1154) : error C2146: syntax error : missing ';' before identifier 'glAreTexturesResident'
C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\include\GL/gl.h(1154) : error C2371: 'APIENTRY' : redefinition; different basic types
C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\include\GL/gl.h(1152) : see declaration of 'APIENTRY'
C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\include\GL/gl.h(1154) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-in
t
C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\include\GL/gl.h(1155) : error C2144: syntax error : 'void' should be preceded by ';'
C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\include\GL/gl.h(1155) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-in
t
C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\include\GL/gl.h(1155) : error C2086: 'int WINGDIAPI' : redefinition
C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\include\GL/gl.h(1152) : see declaration of 'WINGDIAPI'
C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\include\GL/gl.h(1155) : error C2146: syntax error : missing ';' before identifier 'glArrayElement'
C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\include\GL/gl.h(1155) : error C2182: 'APIENTRY' : illegal use of type 'void'
C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\include\GL/gl.h(1155) : error C2086: 'int APIENTRY' : redefinition
C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\include\GL/gl.h(1152) : see declaration of 'APIENTRY'
C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\include\GL/gl.h(1155) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-in
t
C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\include\GL/gl.h(1156) : error C2144: syntax error : 'void' should be preceded by ';'
C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\include\GL/gl.h(1156) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-in
t
C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\include\GL/gl.h(1156) : error C2086: 'int WINGDIAPI' : redefinition
C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\include\GL/gl.h(1152) : see declaration of 'WINGDIAPI'
C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\include\GL/gl.h(1156) : error C2146: syntax error : missing ';' before identifier 'glBegin'
C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\include\GL/gl.h(1156) : error C2182: 'APIENTRY' : illegal use of type 'void'
C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\include\GL/gl.h(1156) : error C2086: 'int APIENTRY' : redefinition
C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\include\GL/gl.h(1152) : see declaration of 'APIENTRY'
C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\include\GL/gl.h(1156) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-in
t
C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\include\GL/gl.h(1157) : error C2144: syntax error : 'void' should be preceded by ';'
C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\include\GL/gl.h(1157) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-in
t
C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\include\GL/gl.h(1157) : error C2086: 'int WINGDIAPI' : redefinition
C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\include\GL/gl.h(1152) : see declaration of 'WINGDIAPI'
C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\include\GL/gl.h(1157) : error C2146: syntax error : missing ';' before identifier 'glBindTexture'
C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\include\GL/gl.h(1157) : error C2182: 'APIENTRY' : illegal use of type 'void'
C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\include\GL/gl.h(1157) : error C2086: 'int APIENTRY' : redefinition
C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\include\GL/gl.h(1152) : see declaration of 'APIENTRY'
C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\include\GL/gl.h(1157) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-in
 
... ...

这个程序在VS上调试时一切正常,没有报这些错误。
如果使用VS上的Project only ---> Run code Analysis on *** 时,出现的错误和SCons编译时出现的错误一样。

请问哥哥们这个问题该怎么解决,是不是Scons 脚本我忘了加什么头文件?

Sconstruct脚本如下:

qtdir = 'C:\developer\qt_vc8'
qtinc = qtdir + '\\include'

osgdir = 'C:\developer\osg'
osginc = osgdir + '\\include'

src = [Glob('*.cpp'),Glob('GeneratedFiles\\release\\*.cpp')]

dll_inc = '..\\SceneEngine'
ui_inc = dll_inc + '\\GeneratedFiles'

vcdir = 'C:\\Program Files\\Microsoft Visual Studio 8\\VC'
vcinc = vcdir + '\\include'
mfcinc = vcdir + '\\atlmfc' + '\\include'
platinc = vcdir + '\\PlatformSDK' + '\\include'

glinc = platinc + '\\gl'

framedir = 'C:\\Program Files\\Microsoft Visual Studio 8\\SDK\\v2.0'
frameinc = framedir + '\\include'

simdir = 'C:\developer\simSDK'
siminc = simdir + '\\include'

inc_path = ';'.join((
vcinc,
mfcinc,
platinc,
glinc,
frameinc,
dll_inc,
ui_inc,
'GeneratedFiles',
qtinc,
qtinc + '\\QtCore',
qtinc + '\\QtGui',
qtinc + '\\QtXml',
qtinc + '\\QtOpenGL',
qtinc + '\\QtWebKit',
siminc,
osginc))

lib_path = qtdir + '\\lib'
libs = ['QtCore4', 'QtGui4', 'qtmain','QtXml4']

env = Environment(tools = ['default', 'qt'])

mode = ARGUMENTS.get('mode', "release")

debugcflags = ['-D_WIN32', '-D_WINDOWS', '-D__UNICODE', '-D_UNICODE', '-D_DEBUG', '-MTd', '-W0', '-EHsc', '-Zi', '-nologo']
releasecflags = ['-D__WINDLL','-D_WIN32', '-D_WINDOWS', '-D__UNICODE', '-D_UNICODE', '-DNDEBUG', '-MD', '-W0', '-O2', '-EHsc', '-nologo','-TP','-D_wall']

if mode=="debug":
env.SharedLibrary('..\\program\\ScenceEngine', src,
CPPDEFINES = 'SCENEENGINE_LIB',
CPPPATH = inc_path,
LIBPATH = lib_path,
CCFLAGS = debugcflags,
LIBS = libs)
else:
env.SharedLibrary('..\\program\\ScenceEngine', src,
CPPDEFINES = 'SCENEENGINE_LIB',
CCFLAGS = releasecflags,
CPPPATH = inc_path,
LIBPATH = lib_path,
LIBS = libs)
...全文
973 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
delphiwcdj 2011-04-15
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 linyoujushi 的回复:]

谢谢各位大哥的参与 。
问题解决了

加上这句话就OK了!

#include <windows.h>
#pragma comment( lib, "opengl32.lib")
[/Quote]
最好把所有需要的lib全部显示加上
林悠居士 2011-04-14
  • 打赏
  • 举报
回复
谢谢各位大哥的参与 。
问题解决了

加上这句话就OK了!

#include <windows.h>
#pragma comment( lib, "opengl32.lib")
hhh_hao 2011-04-14
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 linyoujushi 的回复:]

C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\include\GL/gl.h(1152) : error C2144: syntax error : 'void' should be preceded by ';'
GL/gl.h这个头文件是OSG库调用的,自己写的程序中并没有去引用这个文件。如果要改的话,就得改OSG库了
……
[/Quote]

这里居然碰到用OSG的朋友,幸会。。
林悠居士 2011-04-14
  • 打赏
  • 举报
回复
C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\include\GL/gl.h(1152) : error C2144: syntax error : 'void' should be preceded by ';'
GL/gl.h这个头文件是OSG库调用的,自己写的程序中并没有去引用这个文件。如果要改的话,就得改OSG库了
林悠居士 2011-04-14
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 linyoujushi 的回复:]

是我少加一个头文件还是路径设置错误呢?
[/Quote]
大哥,这个路径是我发贴时不小心写错了。sorry
pathuang68 2011-04-14
  • 打赏
  • 举报
回复
所有的错误都包含:
... udio 8\VC\PlatformSDK\include\GL/gl.h(xxxx) ...

把源代码中的
#include <GL/gl.h>
改成:
#include <GL\gl.h>
试试。
林悠居士 2011-04-14
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 pathuang68 的回复:]

引用 4 楼 linyoujushi 的回复:

是我少加一个头文件还是路径设置错误呢?

路径设置错误。

很明显,所有的错误都和gl.h有关,这说明gl.h没有被正确include进来。
[/Quote]

那那什么用VS2005 可以正常调试呢,而且连警告也没有,可以生成debug版 和 release版。
但用Scons自动编译时却出现了一大堆错误。
pathuang68 2011-04-14
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 linyoujushi 的回复:]

是我少加一个头文件还是路径设置错误呢?
[/Quote]
路径设置错误。

很明显,所有的错误都和gl.h有关,这说明gl.h没有被正确include进来。
delphiwcdj 2011-04-14
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 bdmh 的回复:]

路径问题吧 GL/gl.h改为GL\gl.h
[/Quote]
UP 这个提示这么明显
林悠居士 2011-04-14
  • 打赏
  • 举报
回复
是我少加一个头文件还是路径设置错误呢?
林悠居士 2011-04-14
  • 打赏
  • 举报
回复
sorry,这个是笔误,程序里是设置的没错。
Sou2012 2011-04-14
  • 打赏
  • 举报
回复
路径的问题。
bdmh 2011-04-14
  • 打赏
  • 举报
回复
路径问题吧 GL/gl.h改为GL\gl.h

64,682

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧