This comes from working on iOSLib, but I have the idea its valid for every platform therefore here in general:
I decided to keep the 32/64 bit classes in iOSLib to keep it compatible with older Xojo versions. The external methods seemed like a good way to save a lot of typing: For methods using CGFloats, I installed external methods like
Private Declare Function rotateByX Lib SceneKitLib Selector "rotateByX:y:z:duration:" (id as ptr, x as double, y as double, z as double, duration as double) As ptr
And I set their scope to 64 bit only, duplicated the external method with singles now (except Duration), set its scope to 32 Bit and had only one public method
Shared Function RotateBy(DeltaX as Double, DeltaY as Double, DeltaZ aS Double, Duration as Double) As AppleSCNAction
dim result as new AppleSCNAction (rotateByX(classptr, DeltaX, DeltaY, DeltaZ, Duration))
result.retainclassobject
return result
End Function
This works nicely with 32 Bit and it compiles to 64Bit, but on running it in simulator with 64Bit it didnt work. Objects simply disappear. Obviously the setter receives wrong properties, and it looks like the 32 bit external method is still being used. I tried it with only one external for both sizes/scopes using CGFloats and this works ok.
Is there some problem with the scope of external methods? Or some problem with my concept of it?