我试图在C ++ Builder中使用Hunspell DLL但只有麻烦。
所以我尝试编译为静态库。但即使这样也不顺利。我到目前为止所做的步骤:
src/hunspell
文件夹中的所有* .cxx文件Build
出现的错误是:
[BCC32 Error] cwchar(33): E2141 Declaration syntax error
cwchar是一个文件,它是C ++ Builder的一部分而不是Hunspell(它只包括它)。
从C ++ Builder构建静态hunspell库(甚至DLL)的任何帮助表示赞赏。
提前致谢!
编辑:我能够通过使用更新的C ++ Builder Berlin进一步发展(上面的错误是在2010版本中),但它仍然报告了链接器错误,所以我最终使用了DLL - 请参阅答案。
正如Remy Lebeau和Rudy Velthuis指出的那样,事实证明使用DLL更容易。我还发现了一些技巧,我将在下面介绍。
1)当尝试使用C ++ Builder(柏林)创建静态lib文件时,结果发现当前的hunspell-1.6.2.zip没有编译而没有错误。但是,hunspell-master.zip是SVN主机的一个克隆,它至少编译过,虽然有一些链接器错误 - 但我认为主版本最好用作构建DLL的基础。所以我使用了当前的主版本(https://github.com/hunspell/hunspell)。
2)使用Visual Studio 2015社区构建DLL - libhunspell.dll。为了避免依赖,我在编译器中使用了/MT
选项。我使用DLL版本时遇到了很多问题,这个版本依赖于VC ++ 2015 Redistributable(调用一些DLL函数后立即出现“Access Violation”错误),因此静态链接Redistributable以删除依赖项,所有这些问题都神奇地消失了。即使编译器报告了一些可能是另一个问题的警告,它确实设法构建了DLL。
3)使用implib -a -c -f libhunspell.lib libhunspell.dll
创建导入库
4)最后,使用#pragma comment(lib, "libhunspell.lib")
(对于较旧的RAD Studio版本)或#pragma comment(lib, "libhunspell")
链接到.cpp文件,用于支持64位编译器的较新RAD Studio版本。另一个选择是将lib添加到项目而不是#pragma
语句。