If you get this error when installing sgcWebSockets for CBuilder 10.3 Rio Android:

[bccaarm Error] string.h(204): functions that differ only in their return type cannot be overloaded string.h(45): previous declaration is here


Try the following (extracted from http://docwiki.embarcadero.com/RADStudio/Rio/en/Release_Notes#Additional_Android_SDK_Configuration_Steps_for_C.2B.2BBuilder)

The automatically configured SDK lacks a setting that prevents an error occurring in the string.h header file. To resolve this, open the RAD Studio IDE and perform the following steps:

1. Go to File > Close All

2. Go to Tools > Options > Deployment > SDK Manager.

3. Select Android SDK 25.2.5 32-bit from the SDK Versions list box and click Delete.

4. In the same window, click Add...

5. In the Add a New SDK dialog box, choose Android from the Select a platform dropdown list and Add New... from the Select an SDK version dropdown list. This action opens the Create a new Android SDK dialog.

6. Locate Android SDK Base path and Android NDK Base path from the following root directories, depending on your installation:

Web / GetIt installation: c:\Users\Public\Documents\Embarcadero\Studio\20.0\CatalogRepository

Local/ISO installation: c:\Users\Public\Documents\Embarcadero\Studio\20.0\PlatformSDKs

sgcWebSockets requires Indy to install components in your IDE. Trial installation is compiled against Indy library provided with Delphi / CBuilder, so if you get a message like this:

[DCC Fatal Error] dclsgcWebSocketsDX.dpk(31): E2202 Required package 'IndyCore' not found

Most probably you have a newer Indy version, so in order to install trial you must delete this version and install built-in indy version using Delphi / CBuilder setup.

If you have full source code, then you only must check:

1. Required Indy packages: IndyCore, IndySystem and IndyProtocols. If you have a newer Indy version, most probably packages have a different name (including version), so access to menu "Component / Install Packages" and check which name have Indy packages and change accordingly in project.

2. sgcWebSockets supports several Indy versions, there are compiler defines to allow compile for every Indy version. Open sgcVer.inc, located in source folder, and change accordingly for your Indy version (is gsIdVersion of IdVers.inc Indy file). Some compiler defines:

  {$DEFINE INDY10_1}

  {$DEFINE INDY10_2}

  {$DEFINE INDY10_5_5}

  {$DEFINE INDY10_5_7}

  {$DEFINE INDY10_6}

  {$DEFINE INDY10_6_2_5366}