C ++ Builder — Компиляция Hunspell как статической библиотеки в C ++ Builder

Я пытаюсь использовать Hunspell DLL в C ++ Builder, но у меня нет ничего, кроме проблем.

Поэтому я пытаюсь прибегнуть к компиляции в виде статической библиотеки. Но даже это не идет гладко. Шаги, которые я сделал до сих пор:

  1. загрузил последнюю версию Hunspell с https://github.com/hunspell/hunspell/releases

  2. разархивирован и создан в C ++ Builder — Новое / Другое / Статическая библиотека

  3. щелкнул правой кнопкой мыши и добавил все * .cxx файлы из src/hunspell папка

  4. Нажал Build

Ошибка, которая появляется:

[BCC32 Error] cwchar(33): E2141 Declaration syntax error

cwchar — это файл, который является частью C ++ Builder, а не Hunspell, как кажется (который только включает его).

Приветствуется любая помощь в создании статической библиотеки hunspell (или даже DLL) из C ++ Builder.

Заранее спасибо!

Изменить: я смог продвинуться дальше, используя более позднюю версию C ++ Builder Berlin (вышеупомянутая ошибка была в версии 2010 года), но он все еще сообщал об ошибках компоновщика, поэтому я в конечном итоге использовал DLL — см. Ответ.

0

Решение

Как отмечали Реми Лебо и Руди Велтуис, оказалось, что вместо этого проще использовать 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 заявление.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]