I've had a very frustrating day. Started with the latest version of the Low Latency Data Logger, now called "ExFatLogger". I want to eventually get the Adafruit LSM6DS33 + LIS3MDL - 9 DoF IMU integrated into the logger. This process was progressing well until I started to get random compile errors. I eventually gave up on the modified source and started again with the original code.
I eventually tracked down the problem. The IDE (Web) would revert back to using an old Adafruit version of the SdFat library instead of the V2.x required by the latest version of ExFatLogger.
I did have two copies of the editor running. One did have the AdaFruit code for the LSM6DS33 which I was copy/paste into the ExFatLogger.
Any way to insure I don't run into this type of problem in the future?
Hi @claude_j_greengrass. I can probably advise you on techniques for coercing Arduino Web Editor to use the correct library, but first I need to understand the situation better.
Please provide a sketch that demonstrates the incorrect library being used. It doesnt' need to be your whole sketch. A minimal demonstration sketch with only the code required to demonstrate the issue is perfect.
Please tell me if you have imported any relevant libraries into Arduino Web Editor. I need to be able to reproduce your environment.
An unmodified ExFatLogger.ino will produce some wild compile errors if you have imported adafruit_lsm6ds33_test.ino and have it open if one Wed Editor and the ExFat in another.
Sorry to not be more specific about how to cause this problem. I only figured out that the second instance of Web Editor with adafruit_lsm6ds33_test.ino was causing the IDE to use a fork of SDFat library, something line version 1.4, yes quit old instead of the current 2.x SDFat Some of the types used by ExFatLogger are not defined in the old Adafruit fork.
That about as far as I went with this problem. Restarting the IDE and opening only the ExFatLogger.ino resolved the compile problem. I now cut and paste from a separate browser tab containing the Adafruit lms6ds33 code.
It's partially self inflicted injuries as 9 years ago I need a replacement for my dying linux laptop and instead bought a Chromebook. Wasn't doing any dev work then so ChromeOS was sufficient for my daily needs. The web IDE was my last choice after finding Google had removed my linux access in their latest release of ChromeOS, and a selfish desire to code where I wanted to rather than at my basement office/desktop w/t Linux.
OK, well, I'm not able to answer your question specifically, but I can share some general information that can be applied in any situation where the Arduino development software is not making the right choice when picking from multiple installed libraries that match an #include directive.
This is most prevalent with Arduino Web Editor due to it having ~4000 libraries preinstalled and the user not having the ability to remove problematic libraries, but it also can occur with the desktop tools.
The dependency resolution system, and the specific factors that determine which library gets priority are documented here:
Once you understand this information, you will be able to coerce the development tools to pick the right library in any situation by ensuring the one you want has the highest priority.