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:

    .
  1. ha creato un progetto Win32 Console (vuoto) con il nome MyProject.
  2. ha scaricato Hunspell 1.3.2 da sourceforge.org.
  3. copiato hunspell-1.3.2 \ src \ hunspell e win_api a myproject \ myproject \ hunspell-src
  4. Project aggiunto e convertito libhunspell myproject \ myproject \ hunspell-src \ win-api \ libhunspell.vcproj alla soluzione.
  5. ha reso il mio debug build use debug_dll e il mio rilascio Build Release_dll di libhunspell nel Configuration Manager.
  6. Ricostruita il progetto libhunspell, libhunspell.dll è generato rispettivamente in cartelle di debug_dll e rilascia_dll.
  7. ha reso il mio progetto di console dipende da libhunspell. (Riferimento riferimento a libhunspell)
  8. file dizionario copiato en_us.aff & en_us.dic to myproject \ myproject \ hunspell-dic dopo averli scaricati da sourceforge.org.
  9. 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.

È stato utile?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top