Missing library depends on where I try to compile [SOLVED]


Trying to compile firmware .ino for the Boron where I include both the dct and ParticleFtpClient libraries.

In the web IDE I receive the following error:

fatal error: dct.h: No such file or directory

In the CLI I receive the following error:

fatal error: ParticleFtpClient.h: No such file or directory

The portion of the firmware script requiring dct.h was taken from https://docs.particle.io/support/particle-devices-faq/electron-3rdparty-sims/

Am I missing something that’s obvious to anyone?


Have you simply typed the #include statements at the top of your .ino or did you search for the libraries and add them to your project? You must add the libraries to your project using the Libraries icon image in the WebIDE.

Am able to include the ParticleFtpClient library in the web IDE, but am unable to find the dct library after using the search tool in there.

I can’t find dct.h either. It must be part of the device OS and so you don’t have to add the library. If you search the particle github, dct is mentioned in many files. So, then I have to ask, are you targeting a Boron device in WebIDE? It may be a Boron-only thing so you have to target a device to compile for. Also, ping @rickkas7.

1 Like

Thank you for your help so far,

When I comment out the #include “dct.h” or #include <dct.h> (tried both) in the web IDE these errors pop up:

uploader.ino:14:5: ‘Cellular’ was not declared in this scope
uploader.ino:14:27: ‘EXTERNAL_SIM’ was not declared in this scope
uploader.ino:19:30: ‘DCT_SETUP_DONE_OFFSET’ was not declared in this scope
uploader.ino:19:54: ‘dct_write_app_data’ was not declared in this scope
uploader.ino:22:14: ‘class CloudClass’ has no member named ‘keepAlive’

I think the dct library defines the terms flagged by the compiler. My search for the this specific dct library on GitHub failed. Pinging @rickkas7 at the recommendation of a fellow community member. Any help greatly appreciated!

This would suggest you are not targeting a device that has cellular capability.
Doublecheck your target devcie in Web IDE.
And while at it, also make sure your upgrade your device to the most recent firmware version and target exactly that with your build.

With a correctly targetted device the docs code works for me

I feel awful for wasting everyone’s time - @ScruffR called my mistake correctly. Selecting the Boron from the Devices pane in the web IDE allows the program to compile.

Does selecting the ‘Select to flash’ radio button [star icon] in web IDE do the same thing as including the ‘boron’ after the ‘particle compile’ in CLI? Thank you for all of your help. I wasn’t even thinking about device targeting because we only have Borons.

Thanks to all.

Pretty much so.

However, “starring” in Web IDE does a bit more

  • it also assigns the selected targed version - in CLI that would be the --target switch
  • selects the actual device for OTA update - in CLI you’d need to use particle flash <deviceName> for that