You might have some issues passing pointers to and from AGK.
Now from a basic standpoint AppGameKit doesn't support Pointers... while, yes Version 2 and Studio saw the introduction of the "Ref" Operator to allow R/W References to the Parent Object rather than a Copied Object only Scoped to a Function; this is still being done via the Interop Runtime for the Scripting Language... so, like Java or Python those Entities don't exist in "Memory" the same way a C/C++/C# Object does.
Instead they're being accessed through a Template Entity Class, which automatically handles the Data; and so are not compatible with C Language.
Yes, things like the Arrays (i.e. ToJson and such) give the impression of such functionality, this is all handled as a blackbox function within the Interpreter Runtime; consider it "Hardcoded" Behaviour.
Unfortunately this is a downside to AppGameKit being an Interpreted Scripting Language, as opposed to being a Compiled Language (like Dark Basic Professional is).
The second issue is said Template Entity Class automatically converting Data Types., will always Default output to a Signed 32bit Integer.
This means that you can't use 64bit Pointers; so you're limited to 4GB Address Space but more than this is values above the Sign (i.e. 32 ^ 2 / 2) will not map correctly... it's why in C Languages you avoid (where you can) casting Address values between Signed and Unsigned Integers.
As such you _can_ run into issues regarding addressing memory addresses above 2GB IF you're passing the Pointer to and from AppGameKit between Plugins.
Your better option is instead to write your plugins with Headers and a Library; so that they can access each other directly, rather than using AppGameKit as a go between.
Now personally I'd recommend using a function as part of the Library Header that will pass a Reference to the In-Flight Class you're using in that Library.
It might seem a little "Old School" but tends to be the most robust approach.