2014-11-14 224 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