C++ 在C+中编译为静态库+;建设者

C++ 在C+中编译为静态库+;建设者,c++,c++builder,hunspell,C++,C++builder,Hunspell,我试图在C++ Builder中使用HunScript DLL,但没有什么问题。 因此,我尝试将编译作为静态库。但即使这样也不顺利。到目前为止,我采取的步骤是: 已从下载最新的拼写 >P>在C++ Builder中创建和解压缩-新/其他/强->静态库 /P> 右键单击并添加src/hunspell文件夹中的所有*.cxx文件 单击Build 出现的错误是: [BCC32错误]cwchar(33):E2141声明语法错误 CWCHAR是一个文件,它是C++ Builder的一部分,而不是它看起

我试图在C++ Builder中使用HunScript DLL,但没有什么问题。

因此,我尝试将编译作为静态库。但即使这样也不顺利。到目前为止,我采取的步骤是:

  • 已从下载最新的拼写

  • >P>在C++ Builder中创建和解压缩-新/其他/强->静态库<强/> /P>
  • 右键单击并添加
    src/hunspell
    文件夹中的所有*.cxx文件

  • 单击
    Build

  • 出现的错误是:

    [BCC32错误]cwchar(33):E2141声明语法错误

    CWCHAR是一个文件,它是C++ Builder的一部分,而不是它看起来的(仅包含它)的HunScript。 < >从C++ Builder中了解静态HunScript LIB(甚至DLL)的构建。 提前谢谢


    <强>编辑:我可以通过使用更近的C++ Builder柏林(上面的错误是2010版本)来继续进行进一步的开发,但是它仍然报告链接器错误,所以我最终使用了DLL——见答案。< /强> < /P> < P>。Remy Lebeau和Rudy Velthuis指出,它反而更容易使用DLL。我还发现了一些更多的技巧,我将在下面描述

    1)在使用C++ Builder(柏林)创建静态LIB文件时,发现当前的<强> HunSpLel-1.62.zip >没有编译错误。然而,hunspell master.zip是SVN master的克隆,它至少已编译,尽管存在一些链接器错误,但我认为master版本最好用作构建DLL的基础。所以我使用了当前的主版本()

    2) 使用Visual Studio 2015社区构建DLL-libhunspell.DLL。为了避免依赖关系,我在编译器中使用了
    /MT
    选项。我在使用依赖于VC++2015可再发行库的DLL版本时遇到了很多问题(“调用某些DLL函数后立即出现访问冲突”错误),因此静态链接可再发行库以消除依赖性,所有这些问题都神奇地消失了。尽管编译器报告了一些警告,这可能是另一个问题,但它确实构建了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版本)。另一种选择是将库添加到项目中,而不是添加到
    #pragma
    语句中。

    大多数第三方库与C++Builder的开箱即用不兼容(主要是因为Borland编译器因太旧而不值得支持而名声不佳,直到最近几年Embarcadero发布了新的C++11,很快C++17编译器)。这类库通常需要先进行一些调整。使用DLL的实际问题是什么?您可能只是没有正确使用它,这可能比尝试重新编译整个库更容易修复。此外,您使用的是哪个版本的C++Builder?正如Remy所说,如果您已经有了DLL,使用DLL应该很容易,而不是重新编译。因此,请告诉我们DLL有什么问题。感谢您的帮助-正如您所说的,一旦我知道如何从DLL中删除依赖项,使用DLL就会变得更容易。我将写一个答案来描述这一点。不过,我提出了一个新问题-