在C ++ Builder中将Hunspell编译为静态库

时间:2018-08-29 15:35:40

标签: c++ c++builder hunspell

我试图在C ++ Builder中使用Hunspell DLL,但除了麻烦之外,什么都没有。

所以我尝试求助于编译为静态库。但是,即使那样也不顺利。我到目前为止所做的步骤:

  1. https://github.com/hunspell/hunspell/releases

  2. 下载了最新的Hunspell
  3. 在C ++ Builder中解压缩并创建-新建/其他/ 静态库

  4. 右键单击并添加src/hunspell文件夹中的所有 *。cxx 文件

  5. 点击了Build

出现的错误是:

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

cwchar是C ++ Builder的一部分,而不是Hunspell(仅包含它)。

从C ++ Builder构建静态hunspell lib(甚至DLL)的任何帮助都受到赞赏。

谢谢!

编辑:我可以使用更新的Berlin C ++ Builder来进一步发展(上面的错误是2010年版本),但是它仍然报告链接器错误,因此我最终使用了DLL-请参见答案。 / strong>

1 个答案:

答案 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语句。