2014-11-14 231 views
-3

我想通过本教程学习一些C++上的WinAPI编程。 http://www.winprog.org/tutorial/resources.html语法错误:'常量'

笔者首先定义了一个常数 'RESOURCE.H':

#define IDI_MYICON 101 

,然后他用它在.cpp文件:

#include "resource.h" 
IDI_MYICON ICON "my_icon.ico" 

当我尝试这样做,我得到以下错误: 错误C2059:Syntaxfehler:'康斯坦特' 它翻译成语法错误:'常量(名词)' 我在这里做错了什么?

编辑:好吧,因为它似乎是我的一个非常愚蠢的错误。当之无愧 - 声誉。感谢回复!

+1

我不知道WinAPI是如何工作的,但你链接到的教程说这应该是一个资源脚本,而不是C++源文件。 – 2014-11-14 17:33:35

+0

101 ICON“my_icon.ico”实际上是指C++代码?当然你应该把它放在'.cpp'文件中? – 2014-11-14 17:33:55

+0

你应该仔细阅读本教程:'你在一个资源脚本中创建资源,一个扩展名为“.rc”的文件' – 2014-11-14 17:38:00

回答

1

and then he uses it in the .cpp file

#include "resource.h" 
IDI_MYICON ICON "my_icon.ico" 

这就是问题所在。上述代码需要位于.RC文件,而该文件则需要使用资源编译器编译,而不是C++ 源代码编译器

这条线:

#include "resource.h" 

是在.cpp文件有效。这非常有用,因此可以在创建资源时以及在源代码中引用资源时使用相同的IDI_MYICON定义。

这条线:

IDI_MYICON ICON "my_icon.ico" 

是在.cpp文件无效,只有在rc文件!

+0

那么我该如何编辑.rc文件? Visual C++ 2010 Express没有内置的一个。而像ResEdit这样的资源提供者,你不能改变.rc里面的代码,你只能添加一个菜单或一个图标或任何其他的东西。在我编译成.res文件之后,我还能像教程的作者一样使用它吗?感谢您的帮助。这里是链接http://www.winprog.org/tutorial/menus.html – 2014-11-14 18:11:45

+0

.rc文件只是一个文本文件,使用任何你想要的文本编辑器进行编辑。如果您想直观地编辑文件的内容,例如设计用户界面和菜单,绘制位图/图标或定义字符串表格,那么VS 2010就有内置的资源编辑器用于这些目的(尽管我没有知道它们是否存在于* Express *版本中,我有* Premium *代替)。并且有很多第三方资源编辑器可用于.rc和.res文件。是的,如果需要,您可以将预编译的.res文件链接到VS项目中。 – 2014-11-14 18:20:34

+0

非常感谢,我现在明白这是什么,我刚刚完全混淆了。 – 2014-11-14 18:25:42

0
IDI_MYICON ICON "my_icon.ico" 

是相同

101 ICON "my_icon.ico" 

这是没有意义的,这是错误的语法。

+0

好吧..然后我想我误解了这个,因为这个教程“在任何编译器上。“ – 2014-11-14 17:36:18