C ++ - Utilizzo di Hunspell 1.3.2 con Visual Studio 2010
-
13-12-2019 - |
Domanda
Il mio obiettivo è creare una semplice applicazione console Win32 che utilizza Hunspell per selezionare una parola che l'utente è stato inserito. Ho provato a seguire Questo tutorial Procezione che è per Visual Studio 2008 e Hunspell 1.2.1.
Non voglio usare il codice fornito, dal momento che intendo scrivere il mio. Inoltre voglio aggiungere Hunspell come DLL, non come una libreria statica.
Di seguito sono riportati i passaggi che ho preso:
- .
- ha creato un progetto Win32 Console (vuoto) con il nome MyProject.
- ha scaricato Hunspell 1.3.2 da sourceforge.org.
- copiato hunspell-1.3.2 \ src \ hunspell e win_api a myproject \ myproject \ hunspell-src
- Project aggiunto e convertito libhunspell myproject \ myproject \ hunspell-src \ win-api \ libhunspell.vcproj alla soluzione.
- ha reso il mio debug build use debug_dll e il mio rilascio Build Release_dll di libhunspell nel Configuration Manager.
- Ricostruita il progetto libhunspell, libhunspell.dll è generato rispettivamente in cartelle di debug_dll e rilascia_dll.
- ha reso il mio progetto di console dipende da libhunspell. (Riferimento riferimento a libhunspell)
- file dizionario copiato en_us.aff & en_us.dic to myproject \ myproject \ hunspell-dic dopo averli scaricati da sourceforge.org.
Non riesco a capire come / dove aggiungere il processore Definisci hspelledit_dll menzionato nel tutorial CodeProject.
A seguito dei passaggi elencati in "Per utilizzare la funzionalità dalla libreria di classe nell'applicazione della console" su msdn non ha cambiato il risultato.
Voglio testarlo con un programma come questo:
#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 produce il seguente messaggio di errore se provo a compilare:
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 è presente in MyProject \ Myproject \ Hunspell-SRC \ Hunspell. IntelliSense segna il #include "hunspell.hxx" come errore mentre la scheda non è stata messa a fuoco con il messaggio "Errore: impossibile aprire il file sorgente hunspell.hxx", ma dopo aver dato la messa a fuoco l'errore scompare.
Grazie per il tuo aiuto.
Soluzione
La definizione del preprocessore, hspelledit_dll, non è necessaria a meno che non si utilizzino effettivamente il controllo personalizzato del codice Progetto. Nel caso in cui si desidera definirla (o altre definizioni preprocessore), fare riferimento a / d ( Definizioni preprocessore) .
Le tue stringhe del percorso devono essere doppie \\ invece di single \ scappate e hai alcuni problemi compilati:
#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
}
.
per hunspell.hxx, devi dire al tuo progetto come trovarlo. Per fare ciò, aprire le impostazioni del progetto e il percorso di hunspell.hxx a 'aggiuntivi include directory' in Proprietà di configurazione> C ++> Generale. Fare riferimento a / i (aggiuntivi includono directory) .
Basato su Struttura della directory:
- .
-
Il tuo
Project > Properties > Configuration Properties > C++ > General > 'Additional Include Directories'
deve essere simile a:.\HunSpell-Src\hunspell;%(AdditionalIncludeDirectories)
-
Il tuo
Project > Properties > Configuration Properties > Linker > General > 'Additional Library Directories'
deve essere simile a:.\Debug_dll\libhunspell;%(AdditionalLibraryDirectories)
È inoltre necessario copiare myproject\myproject\Debug_dll\libhunspell\libhunspell.dll
nella directory di output dei progetti (. \ debug) o il tuo exe non sarà in grado di trovarlo.