Bug? AddionalLibraries folder not being used in v10.00

Turbo3

Active Member
Licensed User
Longtime User
Just upgraded from v8.80 to v10.00 and now compile fails with this error.
error: 'iExternalAccessory.h' file not found (in target 'B4iProject' from project 'B4iProject')
The Additional Libraries path in Config is unchanged from v8.80 and the iExternalAccessory.h and .a and .xml files are and have always been in the AdditionalLibraries folder.

Or am I missing something.

Has the format of these file(s) changed so they are no longer being recognized correctly?

To my knowledge iExternalAccessory is no longer supported by the developer.

Is there a way for me to fix the problem with these files if that is the problem?

The library is needed to access Apple's MFi devices.
 

Turbo3

Active Member
Licensed User
Longtime User
Yes, you are missing the Mac component.

Are you using a local builder?
I'm using the Host Builder.

Can you help me understand this missing Mac component.

The AdditionalLibraries folder contains the following three files from the author with dates on 2017 and have worked until B4i v10 and the current Host builder.
iExternalAccessory.h, iExternalAccessory.xml, libiExternalAccessory.a
 

b4x-de

Active Member
Licensed User
Longtime User
If you are using the Hosted Builder service you may ask Erel to upload the missing libraries to the hosted builder. It would be helpful if you could point him to the location of the library where he can download the files.
 

Turbo3

Active Member
Licensed User
Longtime User
I don't understand what libraries you are referring to. B4i includes the option to point to an AdditionalLibraries folder. So the Host Builder would already have access to any needed files.

The code has been compiling and working for the past 5 years using the three iExternalAccessory files and the Host Builder.

I listed the three files making up the iExternalAccessory package which I purchased from the developer in 2020 and have successfully used up until now.

This issue only appeared after updating to B4i V10 and the current Host Builder.

I would assume, based on the file name, that "libiExternalAccessory.a" has all the required files and is accessible to the Host Builder.
 

Turbo3

Active Member
Licensed User
Longtime User
I'll send you the three files that are in the package.

Hope this works. Thanks

Sending it to the Support email address.
 
Last edited:

Turbo3

Active Member
Licensed User
Longtime User
Still not working. I get the same error message.
error: 'iExternalAccessory.h' file not found (in target 'B4iProject' from project 'B4iProject')
This file is clearly in the Additional Libraries folder where it has always been for the last 4-5 years.

Why can't the header file be found by this new Host builder? Can't you just fix the Host Builder so it has access to files in the Additional Library folder again? I assume B4i V10 should be uploading the required Additional Library files when a Host Build starts. Is that the problem?

It makes no sense to me why I had to send these files to Erel for him to manually add it to the Host Builder. Why would we now burden Erel with having to do this when there is the Additional Libraries folder that worked in the past.

The only thing that makes any sense is that I am total unaware of what the real issue is and that the error message is leading me down the wrong path.

I have apps on App Store which I am not unable to update because they need to access Apple MFi Bluetooth devices which requires Apple's External Accessory function.
 

Erel

B4X founder
Staff member
Licensed User
Longtime User
I haven't receive the files. Please send me a private message with them.

It makes no sense to me why I had to send these files to Erel for him to manually add it to the Host Builder. Why would we now burden Erel with having to do this when there is the Additional Libraries folder that worked in the past.
This was always the case with third party libraries.
 

Turbo3

Active Member
Licensed User
Longtime User
Send you a private message with a Dropbox link to a zip of the three files.

Still unclear how it has worked up until now.
 

b4x-de

Active Member
Licensed User
Longtime User
The Additional Libraries folder configured in the local B4i IDE does not participate directly in the actual iOS build process on the Hosted Builder. Its primary purpose is to make libraries known to the IDE at development time. This includes providing metadata for IntelliSense, allowing the IDE to validate symbols, classes, and methods, and enabling the B4i compiler to correctly translate the BASIC code into Objective-C by generating the required references and placeholders during the initial compilation phase.

When B4i translates BASIC code to Objective-C, it needs to know which libraries exist and which APIs they expose. This information comes from the locally installed libraries and their XML descriptions.

However, the real native compilation, linking, and header resolution happens entirely on the Hosted Builder. For that step, the Hosted Builder must already have the corresponding native library files available on the server side.

Libraries placed in the local Additional Libraries folder are not automatically uploaded or transferred to the Hosted Builder. This is why missing header errors occur even though the library is correctly configured in the local IDE.

In short, the Additional Libraries folder supports the IDE and the translation step, but it has no influence on which native libraries are available on the Hosted Builder during the actual iOS build.
 

b4x-de

Active Member
Licensed User
Longtime User
Why would we now burden Erel with having to do this when there is the Additional Libraries folder that worked in the past.
You can help Erel to reduce the burden by following his advice closely. Too me this means that I have to read his short answers multiple times before fully understanding what exactly to do. But he is almost always (99%) right with his feedback. Trust him.
 

Turbo3

Active Member
Licensed User
Longtime User
Ok, now getting past the missing iExternalAccessory.h error. So progress, but not there yet.

Now getting.
error: 'iCore.h' file not found (in target 'B4iProject' from project 'B4iProject')
Obviously I have iCore 10.00 Internal library checked.
 
Last edited:

Turbo3

Active Member
Licensed User
Longtime User
Thanks Erel. Working after you made that last change.

I assume the original developer of that library provided it to you back in 2017. How time flies.

My confusion was not being aware of that step and mistakenly thinking the Additional Library folder was how that got handled.

Thanks again for all your hard work on this over the many years.
 
Top