Я пытаюсь использовать Hunspell DLL в C ++ Builder, но у меня нет ничего, кроме проблем.
Поэтому я пытаюсь прибегнуть к компиляции в виде статической библиотеки. Но даже это не идет гладко. Шаги, которые я сделал до сих пор:
загрузил последнюю версию Hunspell с https://github.com/hunspell/hunspell/releases
разархивирован и создан в C ++ Builder — Новое / Другое / Статическая библиотека
щелкнул правой кнопкой мыши и добавил все * .cxx файлы из src/hunspell
папка
Нажал Build
Ошибка, которая появляется:
[BCC32 Error] cwchar(33): E2141 Declaration syntax error
cwchar — это файл, который является частью C ++ Builder, а не Hunspell, как кажется (который только включает его).
Приветствуется любая помощь в создании статической библиотеки hunspell (или даже DLL) из C ++ Builder.
Заранее спасибо!
Изменить: я смог продвинуться дальше, используя более позднюю версию C ++ Builder Berlin (вышеупомянутая ошибка была в версии 2010 года), но он все еще сообщал об ошибках компоновщика, поэтому я в конечном итоге использовал DLL — см. Ответ.
Как отмечали Реми Лебо и Руди Велтуис, оказалось, что вместо этого проще использовать DLL. Я также обнаружил еще несколько хитростей, которые я опишу ниже.
1) при попытке создать статический файл lib с помощью C ++ Builder (Берлин) оказалось, что текущий hunspell-1.6.2.zip не компилируется без ошибок. Тем не менее hunspell-master.zip который является клоном мастера SVN, он по крайней мере скомпилирован, хотя были некоторые ошибки компоновщика — но я подумал, что мастер-версию лучше использовать в качестве основы для сборки DLL. Поэтому я использовал текущую мастер-версию (https://github.com/hunspell/hunspell).
2) использовал Visual Studio 2015 Community для создания DLL — libhunspell.dll. Чтобы избежать зависимостей, я использовал /MT
вариант в компиляторе. У меня было много проблем с использованием версии DLL, которая зависела от VC ++ 2015 распространяемый («Нарушение прав доступа» приводит к ошибкам сразу после вызова некоторых функций DLL), поэтому статически связывая Распространяемый объект для удаления зависимости, все эти проблемы волшебным образом исчезли. Несмотря на то, что компилятор сообщил о некоторых предупреждениях, что, вероятно, является другим вопросом, ему удалось построить DLL.
3) созданная библиотека импорта с использованием implib -a -c -f libhunspell.lib libhunspell.dll
4) наконец, связано с файлом .cpp с помощью #pragma comment(lib, "libhunspell.lib")
(для более старых версий RAD Studio) или #pragma comment(lib, "libhunspell")
для более новых версий RAD Studio, которые поддерживают 64-битный компилятор). Другой вариант — добавить библиотеку в проект вместо #pragma
заявление.
Других решений пока нет …