C++ - 将 Hunspell 与 MFC 一起使用
Posted
技术标签:
【中文标题】C++ - 将 Hunspell 与 MFC 一起使用【英文标题】:C++ - Using Hunspell with MFC 【发布时间】:2012-03-16 10:47:53 【问题描述】:After I managed to get Hunspell working with a Win32 console application,我想在同一解决方案中的 MFC 应用程序中使用 Hunspell。 尝试编译 MFC 应用程序时出现以下错误。
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\hunspell
和 spellcheck\hunspell-src\win_api
。
项目libhunspell
已被导入并编译没有错误。
解决方案中的控制台应用程序使用相同的 hunspell dll/源文件并且没有错误。
已根据this thread 设置控制台应用程序
文件夹HunSpell-Src
和HunSpell-Dic
不在项目文件夹中,而是在解决方案文件夹spellcheck
中并正确引用。
我已将 MFC 应用程序设置如下:
-
将新的 MFC 应用程序 (SDI) 作为项目添加到名为
MFC2
的解决方案中。
将项目libhunspell
的引用添加到MFC2
。
Project > Properties > Configuration Properties > C++ > General > Additional Include Directories
已设置为:..\hunspell-src\hunspell;%(AdditionalIncludeDirectories)
(与控制台应用相同)
Project > Properties > Configuration Properties > Linker > General > Additional Library Directories
已设置为:..\hunspell-src\win_api\Debug_dll\libhunspell;%(AdditionalLibraryDirectories)
(与控制台应用相同)
在Mainfrm.cpp
中添加#include "../HunSpell-Src/win_api/hunspelldll.h"
under #include MainFrm.h
。
我决定将hunspelldd.h
的#include 放在Mainfrm.cpp
中并省略设置对话框并调用它,以使这个问题尽可能简短。尽管如此,我已经按照描述设置了一个项目,该项目会产生上述错误消息。
因为控制台应用程序编译得很好,我假设某些特定于 MFC 的问题导致了问题。
感谢您的帮助。
【问题讨论】:
【参考方案1】:在replist.hxx中的类声明前添加“#undef near”
【讨论】:
现在它可以编译了,尽管有一些警告。谢谢。 也为我工作。 @Igor:愿意解释一下为什么这是必要的吗? WinAPI minwindef.h 中有“#define near”,在该范围内可见。由于这个原因,预处理器会产生错误。【参考方案2】:我会在replist.hxx 之前的包含文件中查找错误,可能是类定义中缺少结束分号。
【讨论】:
我查了一下,没有找到。如果像这样的简单语法错误是负责任的,libhunspell 甚至能够编译(它做到了)?以上是关于C++ - 将 Hunspell 与 MFC 一起使用的主要内容,如果未能解决你的问题,请参考以下文章
如何在 C++ 语言中将谷歌地图 API 与 MFC 或 QT 一起使用?
MFC中怎么把2个控件组合在一起,如图:怎么把那个圆和实线这个框组合在一起,可以一起操作
如何将 MFC CString 与 boost 字符串算法库一起使用
MFC 是不是仅适用于 Visual Studio,不适用于 Visual C++ Express?
将 TaskDialogIndirect 与 MFC 一起使用时,标题标题 (AFX_IDS_APP_TITLE) 不正确