主题:[讨论]编译错误,请教各位高手
最近在学习北京灵图公司的VRMap软件,照着帮助文档中的开发节点的例子,做了个程序,出现些编译错误,搞的我头晕,救助各位高手。
【一】例子中建立程序的步骤
1.打开VC,首先选择工程类型,请选最上面的ATL COM AppWiard,然后按照提示输入工程名,及保存路径。
2.在Server Type 中选第一个,Dynamic Link Library (dll),创建进程内COM服务器, 还有别忘了在下面在(Support MFC,旁边打沟)我们建立的节点需要MFC库的支持,一切都做好了之后在 图二中点Finish按扭,进入下一个窗口,列出系统为你自动建立的文件,在这个窗口中点OK按扭就行了,进到下一个窗口。
3.现在点VC的Insert 菜单,选择New ATL Object 启动 ATL Object Wiard , 在左边Category中选Objects,然后,再在右边的Objects子选响中选VRMapNode类型,然后点击Next按扭我们进到下一个窗口
5.在这个窗口中我们为新创立的组件加入组件名,取名为FirstNode
6. 然后再选择VRMapNode,在(Support IVRMapRenderable 和Support IVRMapObject 前面打沟,表示选中),然后点确定。好到现在我们就生成了一个空的节点.
【二】出现的错误
现在问题来了,程序到现在为止,我一句代码没有添加,编译的时候出现了32个错误,前面的16个错误跟后面的16个是重复的,如下:
--------------------Configuration: MyNode - Win32 Debug--------------------
Compiling...
FirstNode.cpp
c:\program files\北京灵图软件技术有限公司\vrmap企业版\include\vec.h(7) : error C2011: 'S_Vec2' : 'struct' type redefinition
c:\program files\北京灵图软件技术有限公司\vrmap企业版\include\vec.h(14) : error C2011: 'S_Vec3' : 'struct' type redefinition
c:\program files\北京灵图软件技术有限公司\vrmap企业版\include\vec.h(38) : error C2011: 'S_Matrix' : 'struct' type redefinition
c:\program files\北京灵图软件技术有限公司\vrmap企业版\include\vec.h(50) : error C2146: syntax error : missing ';' before identifier 'position'
c:\program files\北京灵图软件技术有限公司\vrmap企业版\include\vec.h(50) : error C2501: '_S_Vec3' : missing storage-class or type specifiers
c:\program files\北京灵图软件技术有限公司\vrmap企业版\include\vec.h(50) : error C2501: 'position' : missing storage-class or type specifiers
c:\program files\北京灵图软件技术有限公司\vrmap企业版\include\vec.h(51) : error C2146: syntax error : missing ';' before identifier 'direction'
c:\program files\北京灵图软件技术有限公司\vrmap企业版\include\vec.h(51) : error C2501: '_S_Vec3' : missing storage-class or type specifiers
c:\program files\北京灵图软件技术有限公司\vrmap企业版\include\vec.h(51) : error C2501: 'direction' : missing storage-class or type specifiers
c:\program files\北京灵图软件技术有限公司\vrmap企业版\include\vec.h(52) : error C2146: syntax error : missing ';' before identifier 'up'
c:\program files\北京灵图软件技术有限公司\vrmap企业版\include\vec.h(52) : error C2501: '_S_Vec3' : missing storage-class or type specifiers
c:\program files\北京灵图软件技术有限公司\vrmap企业版\include\vec.h(52) : error C2501: 'up' : missing storage-class or type specifiers
c:\program files\北京灵图软件技术有限公司\vrmap企业版\include\vec.h(76) : error C2143: syntax error : missing ';' before '+'
c:\program files\北京灵图软件技术有限公司\vrmap企业版\include\vec.h(76) : error C2433: '_S_Vec3' : 'inline' not permitted on data declarations
c:\program files\北京灵图软件技术有限公司\vrmap企业版\include\vec.h(76) : error C2501: '_S_Vec3' : missing storage-class or type specifiers
c:\program files\北京灵图软件技术有限公司\vrmap企业版\include\vec.h(76) : fatal error C1004: unexpected end of file found
MyNode.cpp
c:\program files\北京灵图软件技术有限公司\vrmap企业版\include\vec.h(7) : error C2011: 'S_Vec2' : 'struct' type redefinition
c:\program files\北京灵图软件技术有限公司\vrmap企业版\include\vec.h(14) : error C2011: 'S_Vec3' : 'struct' type redefinition
c:\program files\北京灵图软件技术有限公司\vrmap企业版\include\vec.h(38) : error C2011: 'S_Matrix' : 'struct' type redefinition
c:\program files\北京灵图软件技术有限公司\vrmap企业版\include\vec.h(50) : error C2146: syntax error : missing ';' before identifier 'position'
c:\program files\北京灵图软件技术有限公司\vrmap企业版\include\vec.h(50) : error C2501: '_S_Vec3' : missing storage-class or type specifiers
c:\program files\北京灵图软件技术有限公司\vrmap企业版\include\vec.h(50) : error C2501: 'position' : missing storage-class or type specifiers
c:\program files\北京灵图软件技术有限公司\vrmap企业版\include\vec.h(51) : error C2146: syntax error : missing ';' before dentifier 'direction'
c:\program files\北京灵图软件技术有限公司\vrmap企业版\include\vec.h(51) : error C2501: '_S_Vec3' : missing storage-class or type specifiers
c:\program files\北京灵图软件技术有限公司\vrmap企业版\include\vec.h(51) : error C2501: 'direction' : missing storage-class or type specifiers
c:\program files\北京灵图软件技术有限公司\vrmap企业版\include\vec.h(52) : error C2146: syntax error : missing ';' before identifier 'up'
c:\program files\北京灵图软件技术有限公司\vrmap企业版\include\vec.h(52) : error C2501: '_S_Vec3' : missing storage-class or type specifiers
c:\program files\北京灵图软件技术有限公司\vrmap企业版\include\vec.h(52) : error C2501: 'up' : missing storage-class or type specifiers
c:\program files\北京灵图软件技术有限公司\vrmap企业版\include\vec.h(76) : error C2143: syntax error : missing ';' before '+'
c:\program files\北京灵图软件技术有限公司\vrmap企业版\include\vec.h(76) : error C2433: '_S_Vec3' : 'inline' not permitted on data declarations
c:\program files\北京灵图软件技术有限公司\vrmap企业版\include\vec.h(76) : error C2501: '_S_Vec3' : missing storage-class or type specifiers
c:\program files\北京灵图软件技术有限公司\vrmap企业版\include\vec.h(76) : fatal error C1004: unexpected end of file found Generating Code...
Error executing cl.exe.
MyNode.dll - 32 error(s), 0 warning(s)
【3】我修改的地方
我怀疑是头文件重复包含的错误,我修改了stdafx.h头文件中一处地方:
#ifndef __AFXWIN_H__
#define __AFXWIN_H__
#include <afxwin.h>
#endif
就是在afxwin.h处添加了ifndef的判断,结果变成了下面的7个错误:
--------------------Configuration: MyNode - Win32 Debug--------------------
Compiling...
StdAfx.cpp
c:\program files\microsoft visual studio\vc98\mfc\include\afxdisp.h(244) : error C2504: 'CException' : base class undefined
c:\program files\microsoft visual studio\vc98\mfc\include\afxdisp.h(247) : error C2143: syntax error : missing ';' before 'public'
c:\program files\microsoft visual studio\vc98\mfc\include\afxdisp.h(249) : error C2143: syntax error : missing ',' before '*'c:\program files\microsoft visual studio\vc98\mfc\include\afxdisp.h(249) : error C2059: syntax error : '*'c:\program files\microsoft visual studio\vc98\mfc\include\afxdisp.h(260) : error C2146: syntax error : missing ';' before identifier 'AfxThrowOleException'
c:\program files\microsoft visual studio\vc98\mfc\include\afxdisp.h(260) : error C2182: 'AFXAPI' : illegal use of type 'void'c:\program files\microsoft visual studio\vc98\mfc\include\afxdisp.h(260) : fatal error C1004: unexpected end of file found
Error executing cl.exe.
MyNode.dll - 7 error(s), 0 warning(s)
又成了类型未定义的错误了,但是在stdafx.h这个头文件里面包含了错误提示中的头文件afxdisp.h
比较繁琐,希望高手们耐心的帮我看看,VRMap软件的破解版可以在迅雷下载,但是都有使用次数限制,我自己写了个小补丁破解了,可以在XP系统下使用。提供帮助的兄弟,如果需要的话可以给我要这个补丁,实际很简单的,可以互相交流。
【一】例子中建立程序的步骤
1.打开VC,首先选择工程类型,请选最上面的ATL COM AppWiard,然后按照提示输入工程名,及保存路径。
2.在Server Type 中选第一个,Dynamic Link Library (dll),创建进程内COM服务器, 还有别忘了在下面在(Support MFC,旁边打沟)我们建立的节点需要MFC库的支持,一切都做好了之后在 图二中点Finish按扭,进入下一个窗口,列出系统为你自动建立的文件,在这个窗口中点OK按扭就行了,进到下一个窗口。
3.现在点VC的Insert 菜单,选择New ATL Object 启动 ATL Object Wiard , 在左边Category中选Objects,然后,再在右边的Objects子选响中选VRMapNode类型,然后点击Next按扭我们进到下一个窗口
5.在这个窗口中我们为新创立的组件加入组件名,取名为FirstNode
6. 然后再选择VRMapNode,在(Support IVRMapRenderable 和Support IVRMapObject 前面打沟,表示选中),然后点确定。好到现在我们就生成了一个空的节点.
【二】出现的错误
现在问题来了,程序到现在为止,我一句代码没有添加,编译的时候出现了32个错误,前面的16个错误跟后面的16个是重复的,如下:
--------------------Configuration: MyNode - Win32 Debug--------------------
Compiling...
FirstNode.cpp
c:\program files\北京灵图软件技术有限公司\vrmap企业版\include\vec.h(7) : error C2011: 'S_Vec2' : 'struct' type redefinition
c:\program files\北京灵图软件技术有限公司\vrmap企业版\include\vec.h(14) : error C2011: 'S_Vec3' : 'struct' type redefinition
c:\program files\北京灵图软件技术有限公司\vrmap企业版\include\vec.h(38) : error C2011: 'S_Matrix' : 'struct' type redefinition
c:\program files\北京灵图软件技术有限公司\vrmap企业版\include\vec.h(50) : error C2146: syntax error : missing ';' before identifier 'position'
c:\program files\北京灵图软件技术有限公司\vrmap企业版\include\vec.h(50) : error C2501: '_S_Vec3' : missing storage-class or type specifiers
c:\program files\北京灵图软件技术有限公司\vrmap企业版\include\vec.h(50) : error C2501: 'position' : missing storage-class or type specifiers
c:\program files\北京灵图软件技术有限公司\vrmap企业版\include\vec.h(51) : error C2146: syntax error : missing ';' before identifier 'direction'
c:\program files\北京灵图软件技术有限公司\vrmap企业版\include\vec.h(51) : error C2501: '_S_Vec3' : missing storage-class or type specifiers
c:\program files\北京灵图软件技术有限公司\vrmap企业版\include\vec.h(51) : error C2501: 'direction' : missing storage-class or type specifiers
c:\program files\北京灵图软件技术有限公司\vrmap企业版\include\vec.h(52) : error C2146: syntax error : missing ';' before identifier 'up'
c:\program files\北京灵图软件技术有限公司\vrmap企业版\include\vec.h(52) : error C2501: '_S_Vec3' : missing storage-class or type specifiers
c:\program files\北京灵图软件技术有限公司\vrmap企业版\include\vec.h(52) : error C2501: 'up' : missing storage-class or type specifiers
c:\program files\北京灵图软件技术有限公司\vrmap企业版\include\vec.h(76) : error C2143: syntax error : missing ';' before '+'
c:\program files\北京灵图软件技术有限公司\vrmap企业版\include\vec.h(76) : error C2433: '_S_Vec3' : 'inline' not permitted on data declarations
c:\program files\北京灵图软件技术有限公司\vrmap企业版\include\vec.h(76) : error C2501: '_S_Vec3' : missing storage-class or type specifiers
c:\program files\北京灵图软件技术有限公司\vrmap企业版\include\vec.h(76) : fatal error C1004: unexpected end of file found
MyNode.cpp
c:\program files\北京灵图软件技术有限公司\vrmap企业版\include\vec.h(7) : error C2011: 'S_Vec2' : 'struct' type redefinition
c:\program files\北京灵图软件技术有限公司\vrmap企业版\include\vec.h(14) : error C2011: 'S_Vec3' : 'struct' type redefinition
c:\program files\北京灵图软件技术有限公司\vrmap企业版\include\vec.h(38) : error C2011: 'S_Matrix' : 'struct' type redefinition
c:\program files\北京灵图软件技术有限公司\vrmap企业版\include\vec.h(50) : error C2146: syntax error : missing ';' before identifier 'position'
c:\program files\北京灵图软件技术有限公司\vrmap企业版\include\vec.h(50) : error C2501: '_S_Vec3' : missing storage-class or type specifiers
c:\program files\北京灵图软件技术有限公司\vrmap企业版\include\vec.h(50) : error C2501: 'position' : missing storage-class or type specifiers
c:\program files\北京灵图软件技术有限公司\vrmap企业版\include\vec.h(51) : error C2146: syntax error : missing ';' before dentifier 'direction'
c:\program files\北京灵图软件技术有限公司\vrmap企业版\include\vec.h(51) : error C2501: '_S_Vec3' : missing storage-class or type specifiers
c:\program files\北京灵图软件技术有限公司\vrmap企业版\include\vec.h(51) : error C2501: 'direction' : missing storage-class or type specifiers
c:\program files\北京灵图软件技术有限公司\vrmap企业版\include\vec.h(52) : error C2146: syntax error : missing ';' before identifier 'up'
c:\program files\北京灵图软件技术有限公司\vrmap企业版\include\vec.h(52) : error C2501: '_S_Vec3' : missing storage-class or type specifiers
c:\program files\北京灵图软件技术有限公司\vrmap企业版\include\vec.h(52) : error C2501: 'up' : missing storage-class or type specifiers
c:\program files\北京灵图软件技术有限公司\vrmap企业版\include\vec.h(76) : error C2143: syntax error : missing ';' before '+'
c:\program files\北京灵图软件技术有限公司\vrmap企业版\include\vec.h(76) : error C2433: '_S_Vec3' : 'inline' not permitted on data declarations
c:\program files\北京灵图软件技术有限公司\vrmap企业版\include\vec.h(76) : error C2501: '_S_Vec3' : missing storage-class or type specifiers
c:\program files\北京灵图软件技术有限公司\vrmap企业版\include\vec.h(76) : fatal error C1004: unexpected end of file found Generating Code...
Error executing cl.exe.
MyNode.dll - 32 error(s), 0 warning(s)
【3】我修改的地方
我怀疑是头文件重复包含的错误,我修改了stdafx.h头文件中一处地方:
#ifndef __AFXWIN_H__
#define __AFXWIN_H__
#include <afxwin.h>
#endif
就是在afxwin.h处添加了ifndef的判断,结果变成了下面的7个错误:
--------------------Configuration: MyNode - Win32 Debug--------------------
Compiling...
StdAfx.cpp
c:\program files\microsoft visual studio\vc98\mfc\include\afxdisp.h(244) : error C2504: 'CException' : base class undefined
c:\program files\microsoft visual studio\vc98\mfc\include\afxdisp.h(247) : error C2143: syntax error : missing ';' before 'public'
c:\program files\microsoft visual studio\vc98\mfc\include\afxdisp.h(249) : error C2143: syntax error : missing ',' before '*'c:\program files\microsoft visual studio\vc98\mfc\include\afxdisp.h(249) : error C2059: syntax error : '*'c:\program files\microsoft visual studio\vc98\mfc\include\afxdisp.h(260) : error C2146: syntax error : missing ';' before identifier 'AfxThrowOleException'
c:\program files\microsoft visual studio\vc98\mfc\include\afxdisp.h(260) : error C2182: 'AFXAPI' : illegal use of type 'void'c:\program files\microsoft visual studio\vc98\mfc\include\afxdisp.h(260) : fatal error C1004: unexpected end of file found
Error executing cl.exe.
MyNode.dll - 7 error(s), 0 warning(s)
又成了类型未定义的错误了,但是在stdafx.h这个头文件里面包含了错误提示中的头文件afxdisp.h
比较繁琐,希望高手们耐心的帮我看看,VRMap软件的破解版可以在迅雷下载,但是都有使用次数限制,我自己写了个小补丁破解了,可以在XP系统下使用。提供帮助的兄弟,如果需要的话可以给我要这个补丁,实际很简单的,可以互相交流。