C++ - 将 HunSpell 1.3.2 与 Visual Studio 2010 结合使用

2023-12-13

我的目标是创建一个简单的 Win32 控制台应用程序,它使用 HunSpell 对用户输入的单词进行拼写检查。 我试着跟随这个代码项目教程适用于 Visual Studio 2008 和 HunSpell 1.2.1。

我不想使用提供的代码,因为我打算编写自己的代码。 此外,我想将 HunSpell 添加为 dll,而不是静态库。

以下是我采取的步骤:

  1. 创建了一个名为 myproject 的 Win32 控制台(空)项目。
  2. 从 SourceForge.org 下载 HunSpell 1.3.2。
  3. Copied hunspell-1.3.2\src\hunspell and win_api to myproject\myproject\HunSpell-Src
  4. 添加并转换了项目 libhunspellmyproject\myproject\HunSpell-Src\win-api\libhunspell.vcproj到解决方案。
  5. 在配置管理器中使我的调试版本使用 libhunspell 的 debug_dll 和我的发布版本release_dll。
  6. 重建 libhunspell 项目,libhunspell.dll分别生成在debug_dll和release_dll文件夹中。
  7. 使我的控制台项目依赖于 libhunspell。 (添加了对 libhunspell 的引用)
  8. 将字典文件 en_US.aff 和 en_US.dic 复制到myproject\myproject\HunSpell-Dic从 SourceForge.org 下载它们之后。

我不知道如何/在哪里添加代码项目教程中提到的处理器定义 HSPELLEDIT_DLL。

按照“在控制台应用程序中使用类库中的功能”下列出的步骤进行操作MSDN并没有改变结果。

我想用这样的程序来测试它:

#include <iostream>
#include "HunSpell-Src/win_api/hunspelldll.h"

using namespace std;

void main()
{
    void *spellObj = hunspell_initialize("HunSpell-Dic\\en_us.aff", "HunSpell-Dic\\en_us.dic");

    char str[60];

    cin >> str;

    int result = hunspell_spell(spellObj, str);

    if(result == 0)
        cout << "Spelling error!";
    else
        cout << "Correct Spelling!";

    hunspell_uninitialize(spellObject);
}

如果我尝试编译它,VS 会产生以下错误消息:

myproject\myproject\hunspell-src\win_api\hunspelldll.h(34): fatal error C1083: Cannot open include file: 'hunspell.hxx': No such file or directory

Hunspell.hxx 存在于 myproject\myproject\HunSpell-Src\hunspell 中。当选项卡未聚焦并显示消息“错误:无法打开源文件 hunspell.hxx”时,IntelliSense 将 #include“hunspell.hxx”标记为错误,但在给予焦点后错误消失。

感谢您的帮助。


除非您要实际使用代码项目作者的自定义控件,否则不需要预处理器定义 HSPELLEDIT_DLL。如果您想定义它(或其他预处理器定义),请参阅/D(预处理器定义).

您的路径字符串需要是双 \\ 而不是单 \ 转义,并且您有一些编译问题:

#include <iostream>
#include "HunSpell-Src/win_api/hunspelldll.h"

using namespace std;

void main()
{
    Hunspell *spellObj = (Hunspell *)hunspell_initialize("HunSpell-Dic\\en_us.aff", "HunSpell-Dic\\en_us.dic");
//  ^change * type        ^cast returned void* to type that will be used later

    char str[60];

    cin >> str;

    int result = hunspell_spell(spellObj, str);

    if(result == 0)
        cout << "Spelling error!";
    else
        cout << "Correct Spelling!";

    hunspell_uninitialize(spellObj /*SpellObject is undefined*/);
//                        ^use correct variable
}

对于 Hunspell.hxx,您需要告诉您的项目如何找到它。为此,请打开项目设置,并将 Hunspell.hxx 的路径添加到“配置属性”>“C++”>“常规”下的“其他包含目录”。参考/I(附加包含目录).

基于your目录结构:

  • Your Project > Properties > Configuration Properties > C++ > General > 'Additional Include Directories'应该看起来像:.\HunSpell-Src\hunspell;%(AdditionalIncludeDirectories)

  • Your Project > Properties > Configuration Properties > Linker > General > 'Additional Library Directories'应该看起来像:.\Debug_dll\libhunspell;%(AdditionalLibraryDirectories)

您还需要复制myproject\myproject\Debug_dll\libhunspell\libhunspell.dll到您的项目输出目录(.\Debug),否则您的 exe 将无法找到它。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C++ - 将 HunSpell 1.3.2 与 Visual Studio 2010 结合使用 的相关文章

  • C++ 模板中的名称查找

    我有一些 C 代码 如果没有 fpermissive 选项 就无法再编译 这是我无法分享的专有代码 但我认为我已经能够提取一个简单的测试用例来演示该问题 这是 g 的输出 template eg cpp In instantiation o
  • asp.net c# 将数据集中的数据转换为电子邮件正文?

    从数据集到电子邮件正文的最佳方式是什么 我有一个 net 控制台应用程序 用于根据存储过程的结果发送电子邮件通知 并且想知道如何最好地从 SQL 数据转到电子邮件正文 带有颜色和字体的 html 正文是最好的 但纯文本也可以 thanks
  • C 中的复合语句表达式

    下面的代码不起作用 int i void 999 100 添加括号就可以了 为什么 int i void 999 100 还有另一种方法可以完成此类分配 int i void 999 100 是什么让他们与众不同 在这份声明中 int i
  • C++ 中的单例和抽象基类

    最近我遇到了关于实现 Singleton 但涉及抽象基类的问题 假设我们有这样的类层次结构 class IFoo it s ABC class Foo public IFoo 我们的单例类定义如下 template
  • 异步方法中的异常未被捕获

    下面的代码没有捕获我的OperationCancelEException 它是通过调用抛出的ct ThrowIfCancellationRequested public partial class TitleWindow Window IA
  • 基于 MS Bot Framework 中的响应分支对话框/表单

    我们正在尝试使用 MS Bot Framework 但尚未完全弄清楚如何实现此场景 我们有一个 LUIS 对话框 类型 它工作正常并且经过适当的培训 以常见的三明治为例 LUIS 意图寻找的基本内容是用户询问订单状态 如果问题中提供了订单号
  • 将列表(对象)转换为列表(字符串)

    有没有办法转换List of Object to a List of String 在 c 或 vb net 中而不迭代所有项目 幕后迭代很好 我只想要简洁的代码 Update 最好的方法可能就是进行新的选择 myList Select f
  • 如何在 C++ 中对静态缓冲区执行字符串格式化?

    我正在处理一段对性能要求非常高的代码 我需要执行一些格式化的字符串操作 但我试图避免内存分配 甚至是内部库的内存分配 在过去 我会做类似以下的事情 假设是 C 11 constexpr int BUFFER SIZE 200 char bu
  • C 中“for”循环中的两个变量

    我正在编写一些代码 需要在其中使用两个变量for环形 下面的代码看起来没问题吗 它确实给了我预期的结果 for loop 1 offset loop 2 offset 2 loop 1 gt offset 190 loop 2 lt 190
  • 如何附加到 xml

    我有这个xml
  • 简单的文档管理系统和API [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • Qt mouseReleaseEvent() 未触发?

    我有一个显示图片的库 我们称之为 PictureGLWidget 其中 class PictureGLWidget public QGLWidget 所以 PictureGLWidget 扩展了 QGLWidget 在PictureGlWi
  • 使用互斥锁来阻止临界区外部的执行

    我不确定我的术语是否正确 但这里是 我有一个由多个线程使用的函数来写入数据 在注释中使用伪代码来说明我想要的内容 these are initiated in the constructor int data std atomic
  • System.diagnostics.process 进程在托管后无法在 IIS 上运行?

    我正在尝试从网络应用程序安装 exe 当我在本地运行应用程序 从 asp 开发服务器 时 它安装正确 但当我托管在 IIS 上时 它不起作用 我在asp net页面的Page load方法上编写了这段代码 想要在客户端计算机上安装Test
  • 在 try catch 块中返回到 catch 内是否不好?这是很好的做法

    在 try catch 块中从 C 中的 catch 块返回值是不好的做法吗 try Some code return 1 catch return 0 哪种使用 try catch 的方法是好的做法 不需要 只要返回的值是你想要的 你可以
  • 使用 roslyn 扩展 C# 语法

    我试图在没有 else 情况的情况下实现 return if return value if 因为我只想在条件有效时返回或返回一个值 我知道 有if condition return or if condition return value
  • 如何将 Metro 应用部署到桌面?

    我正在尝试将我的 C 应用程序部署到我的 Windows 8 Metro 桌面 我可以在 bin 文件夹中看到部署的文件 但是当我尝试打开它们时 出现以下错误 该应用程序只能在 AppContainer 的上下文中运行 我检查了属性上下文菜
  • 将小数格式化为两位或整数

    对于 10 我想要 10 而不是 10 00 对于 10 11 我想要 10 11 没有代码可以实现吗 即通过指定格式字符串类似于 0 N2 decimal num 10 11M Console WriteLine num ToString
  • 具有多种类型的 C# 泛型类型推断

    我有以下通用方法 用于将一种类型的输入对象序列化为超类型 如下所示 public string SerialiseAs
  • 什么时候使用静态库需要头文件?

    如果我在 Linux 中用 C 创建一个静态库并生成 a 文件 我 或其他人 如何使用该库 例如 我的库定义了一个类 我认为仅仅提供 a 文件是不够的 还需要提供头文件 我如何知道 a 文件必须提供哪些头文件 例如 我是否需要提供我的库代码

随机推荐

  • JavaFX 3D 对象之间的并集、交集和差异

    有没有办法在 JavaFX 3D 对象之间执行布尔运算 例如并集 交集和差集 例如在 Sphere 实例 Cylinder 实例和 Box 实例之间 从 Shape 类继承的 JavaFX 2D 对象已经具有 union 和 minus 方
  • 从外部模块访问资源文件

    到目前为止 在非模块化 java 之前 您只需将文件放入src main java resources确保它在类路径中 然后加载它 file getClass getClassLoader getResourceAsStream myfil
  • 如何存储和搜索 IP 地址

    我有 4 个 IP 地址源 我想将它们存储在 SQL Server 中 并允许按来源国家 地区代码分类的范围按国家 地区在排除列表中创建 为此我有两张桌子 IP地址范围 国家代码 我需要知道的是 如果此数据返回到客户端然后缓存以供快速查询
  • 如何在后台状态下获取来电/去电事件

    在我的一个应用程序中 它具有我成功实现的播放声音的功能 即使当应用程序正在运行 前台状态 并且我们收到来电时 应用程序音乐也会停止并在呼叫断开时再次恢复 现在真正的问题就在这里 当应用程序进入后台状态时 我们不会收到任何来电 去电事件 在后
  • 改进 Retina iPad 上的缓慢画布动画 - KineticJS

    我正在使用 KineticJS 执行 HTML Canvas 动画 动画可以在所有桌面浏览器和非视网膜 iDevices 包括 iPad mini 上完美运行 但是 从视网膜设备 浏览器或使用 appcelerator 的应用内 Web 视
  • 这个打印样式表如何工作?

    我真的很喜欢如何http www honorshaven com 看起来是打印出来的 pdf 我浏览了源代码 试图弄清楚他们是如何做到的 我的导航总是在打印时变成丑陋的项目符号列表 我不知所措 有人知道吗 任何帮助都是极好的 谢谢 马丁 编
  • 获取所有模型类型

    如何获取属于模型一部分的实体类型列表 以便我可以测试模型是否确实适用于该实体类型 var dcx new MyDbContext var lst new List
  • 是否可以将 JavaVM * 和 JNIEnv * 保存为全局变量并在其他地方使用?

    JavaVM javaVM NULL JNIEnv jniEnv NULL createJavaVM javaVM 无效 jniEnv javaVMInitArgs 其中 javaVM 和 jniEnv 是全局变量 是否可以将JavaVM
  • Z3 Java API 文档

    我已经安装了Z3 API for Java我正在尝试使用它 但找不到任何解释如何使用此 API 的文档 到目前为止我找到的唯一资源是源代码和示例程序 所以我想知道是否有人知道任何其他文档Z3 Java API 目前 Java API 没有单
  • 使用 swing 组件在框架中打开文本文件

    我想使用 swing 组件打开框架中的文本文件 最好具有突出显示功能 我在第一帧中提交的文本中获取文本文件的名称 并想在第二帧中打开该文本文件 我的代码是 import javax swing import java awt import
  • Laravel 验证:必须是符合“json”规则的有效 JSON 字符串

    我正在制作 Laravel API 但我似乎无法在其中一篇文章中发送 JSON 数据 我检查了 StackOverflow 中的其他帖子 但似乎我的 JSON 请求是正确的 所以我似乎找不到错误 这是我的控制器方法中的代码 validato
  • 如何初始化参数化模板类的静态成员

    我不认为我的问题重复this one 我尝试做的事情 template
  • JavaScript 深度优先搜索

    我正在尝试用 JavaScript 实现 DFS 但遇到了一些问题 这是我的算法课 use strict define function return function var that this this search function
  • 我想了解 @Html.DisplayFor(modelItem => item.FirstName) 中的 lambda 表达式

    我对 C 和 MVC 相当陌生 并且在某些场合使用过 lambda 例如匿名方法和 LINQ 通常我看到的 lambda 表达式看起来像这样 x gt x Name x gt Console WriteLine x 我知道 lambda 去
  • 使用 PHP 获取 SQL-Server 中的行数

    我对 SQL Server 和 PHP 相当陌生 但我正在尝试使用 PHP 获取表中的总行数 这是我正在使用的代码 它连接得很好 但它不会打印行数 b Error b Could not connect to the server data
  • Maven 中同一项目的 maven-jaxb2-plugin 片段,可能吗?

    我有一个basic xsd和另外两个A xsd and B xsd A xsd and B xsd转换为两个不同的 java 包 因此我需要同一插件的两次 Maven 执行 两个 XSD 均指basic xsd对于一些共享类 如果basic
  • 从 COM 加载项窗口中选择 [删除] 后无法重新注册 VSTO 加载项

    我正在为 Ms Word 开发 VSTO 插件 VS 2017 中的运行 gt 开始 F5 运行良好 今天 我通过发布加载项 ClickOnce 生成 vsto 文件 并在我用于开发 调试的同一台计算机上进行设置来运行我的第一次测试 为了在
  • Angular 单元测试 - 模拟 REST 服务调用

    我正在为 Angular 应用程序编写单元测试来测试前端功能 并尝试生成一种方法来模拟以下场景的休息服务调用 我有一个类定义如下 import Component OnInit from angular core import RestSe
  • 字符串到日期时间转换javascript

    如何使用java脚本将字符串 2010年4月9日 转换为日期时间 2010年4月9日00 00 00 我需要比较验证日期 查看日期解析 str 09 Apr 2010 date new Date Date parse str replace
  • C++ - 将 HunSpell 1.3.2 与 Visual Studio 2010 结合使用

    我的目标是创建一个简单的 Win32 控制台应用程序 它使用 HunSpell 对用户输入的单词进行拼写检查 我试着跟随这个代码项目教程适用于 Visual Studio 2008 和 HunSpell 1 2 1 我不想使用提供的代码 因