我试图在C ++ Builder中使用Hunspell DLL,但除了麻烦之外,什么都没有。
所以我尝试求助于编译为静态库。但是,即使那样也不顺利。我到目前为止所做的步骤:
在C ++ Builder中解压缩并创建-新建/其他/ 静态库
右键单击并添加src/hunspell
文件夹中的所有 *。cxx 文件
点击了Build
出现的错误是:
[BCC32 Error] cwchar(33): E2141 Declaration syntax error
cwchar是C ++ Builder的一部分,而不是Hunspell(仅包含它)。
从C ++ Builder构建静态hunspell lib(甚至DLL)的任何帮助都受到赞赏。
谢谢!
编辑:我可以使用更新的Berlin C ++ Builder来进一步发展(上面的错误是2010年版本),但是它仍然报告链接器错误,因此我最终使用了DLL-请参见答案。 / strong>
答案 0 :(得分:0)
正如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
选项。我在使用依赖于 VC ++ 2015 Redistributable 的DLL版本时遇到了很多问题(调用某些DLL函数后立即出现“访问冲突”错误),因此静态链接Redistributable来删除依赖项,所有这些这些问题神奇地消失了。即使编译器报告了一些警告,这可能是另一个问题,但它确实设法构建了DLL。
3)使用implib -a -c -f libhunspell.lib libhunspell.dll
4),最后,使用#pragma comment(lib, "libhunspell.lib")
(对于较旧的RAD Studio版本)或#pragma comment(lib, "libhunspell")
(对于支持64位编译器的较新RAD Studio版本)链接到.cpp文件。另一种选择是将lib添加到项目中,而不是使用#pragma
语句。