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\hunspellspellcheck\hunspell-src\win_api。 项目libhunspell已被导入并编译没有错误。 解决方案中的控制台应用程序使用相同的 hunspell dll/源文件并且没有错误。 已根据this thread 设置控制台应用程序 文件夹HunSpell-SrcHunSpell-Dic 不在项目文件夹中,而是在解决方案文件夹spellcheck 中并正确引用。

我已将 MFC 应用程序设置如下:

    将新的 MFC 应用程序 (SDI) 作为项目添加到名为 MFC2 的解决方案中。 将项目libhunspell 的引用添加到MFC2Project > 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,将变量与消息一起发布到线程

MFC中怎么把2个控件组合在一起,如图:怎么把那个圆和实线这个框组合在一起,可以一起操作

如何将 MFC CString 与 boost 字符串算法库一起使用

MFC 是不是仅适用于 Visual Studio,不适用于 Visual C++ Express?

将 TaskDialogIndirect 与 MFC 一起使用时,标题标题 (AFX_IDS_APP_TITLE) 不正确