2012-03-16 43 views
2

After I managed to get Hunspell working with a Win32 console application,我想在同一個解決方案中的MFC應用程序中使用Hunspell。 當我嘗試編譯MFC應用程序時出現以下錯誤。C++ - 在MFC中使用Hunspell

spellcheck\hunspell-src\hunspell\replist.hxx(23): error C2062: type 'const char' unexpected 
spellcheck\hunspell-src\hunspell\replist.hxx(23): error C2238: unexpected token(s) preceding ';' 

有關解決方案的一些信息:

  • 該解決方案被稱爲拼寫檢查。
  • Hunspell源文件位於spellcheck\hunspell-src\hunspellspellcheck\hunspell-src\win_api
  • 項目libhunspell已導入並編譯無誤。
  • 解決方案中的控制檯應用程序使用相同的hunspell dll /源文件,並具有無錯誤
  • 控制檯應用程序已經設置相應地this thread
  • 的文件夾HunSpell-SrcHunSpell-Dic不位於項目文件夾,但在解決方案文件夾spellcheck和正確引用。

我已經安裝了MFC應用程序如下:

  1. 增加了一個新的MFC應用程序(SDI)的項目叫MFC2解決方案。
  2. 添加了對項目libhunspellMFC2的引用。
  3. Project > Properties > Configuration Properties > C++ > General > Additional Include Directories已經被設置爲:..\hunspell-src\hunspell;%(AdditionalIncludeDirectories)(相同控制檯應用程序)
  4. Project > Properties > Configuration Properties > Linker > General > Additional Library Directories已被設置爲:在Mainfrm.cpp#include MainFrm.h..\hunspell-src\win_api\Debug_dll\libhunspell;%(AdditionalLibraryDirectories)(同控制檯應用程序)
  5. 添加#include "../HunSpell-Src/win_api/hunspelldll.h"

我決定把的hunspelldd.h將#include在Mainfrm.cpp並省略設立一個對話框,稱這是爲了保住這個問題儘可能短。儘管如此,我已經建立了一個項目描述,產生所述的錯誤信息。

由於控制檯應用程序編譯得很好,我假定MFC特定的東西導致了問題。

謝謝你的幫助。

回答

4

在課堂申報前在replist.hxx中添加「#undef near」

+0

現在它編譯,雖然有幾個警告。謝謝。 – 2012-05-28 14:43:52

+0

也爲我工作。 @Igor:謹慎地給出解釋爲什麼這是必要的? – Jacob 2012-06-07 18:57:20

+0

WinAPI minwindef.h中有「#define near」,在該範圍內可見。由於這個原因預處理器產生錯誤。 – Igor 2012-06-11 09:06:12

0

我想在replist.hxx之前的包含文件中尋找一個錯誤,也許是類定義上缺少的結尾分號。

+0

我檢查過了,找不到任何。如果這樣一個簡單的語法錯誤是負責任的,將libhunspell甚至能夠編譯(它做到了)? – 2012-03-16 14:59:59