grijjy / GrijjyCloudLogger

GrijjyCloudLogger, remote logging for Windows, iOS, Android, macOS and Linux
Other
108 stars 29 forks source link

[DCC Fatal Error] F2588 Linker error code: 3221225477 ($ c0000005) when I compile in IOS-64 bit in debug #13

Open TheStranger25 opened 2 years ago

TheStranger25 commented 2 years ago

Hi, I'm trying to develop a cross platform app using GrijjyCloudLogger as a debugging logger. However on IOS-64 bit in debug mode I can't compile my app and I get the following error: [DCC Fatal Error] F2588 Linker error code: 3221225477 ($ c0000005). While in release mode and for other platforms it works, what can be the problem?

allendrennan commented 2 years ago

I did reproduce the issue, very strange – not sure how long that it’s existed.

I see the issue has been reported to Embarcadero, so it’s not ZeroMQ specific: https://quality.embarcadero.com/browse/RSP-37075 https://quality.embarcadero.com/browse/RSP-37650 There are a few other reports.

We will look it over anyway and see if there is anything we can do about it.

TheStranger25 commented 2 years ago

If they do not solve the problem on embarcadero it will be impossible to use grijjy for IOS debugging, we hope ...

allendrennan commented 2 years ago

I was able to get it working by rebuilding the static library (.a) file and separating the armv7 and arm64 static libraries. The static library is a universal static library that combines both architectures into a single static library. This is something that use to work when linking with in earlier versions of Delphi but doesn't anymore. To see if you are using a universal static library you can copy the (.a) file over to a Mac and from a Terminal run:

lipo -info mylibrary.a

You can separate the architectures as well using: lipo mylibrary-a -thin arm64 -output mylibrary_ios64.a lipo mylibrary-a -thin armv7 -output mylibrary_ios32.a

Then just copy (and rename) the arm64 version and replace the existing file. Most iOS products no longer need (or want) armv7 so it is probably best to drop it altogether or link it separately for different build types.