Hmm. I've googled like a mad man and I've only managed to find the following pages that bare any resemblance to your problem :

http://stackoverflow.com/questions/9...d-by-xcode-app

http://forum.lazarus.freepascal.org/...?topic=20252.0

along with the compiler directive {$linklib}

also I had a problem with relative paths in bundles long ago during debugging/executing from my IDE (but it was my data files and not a lib) does it still happen when you run the bundle directly?

Try an absolute path to a point in your file-system rather than the relative "@executable_path/../Frameworks"

If an absolute path doesn't work then either the SDL2 libs you have are not valid (32bit vs 64bit?) or that directory is simply not being passed to the linker.

Perhaps installing Lazarus and compiling there - see if you can replicate the problem. Also while it can't find the libs in the path you specify, perhaps it is looking elsewhere, try placing them at the root of the bundle, next to the binary etc. Perhaps the default path will be one of these.

I think it would be worth eliminating those dynamic libs as the source of the problem (although to be fair they're likely fine) perhaps an existing SDL2 mac game/program that you can examine/swap files in.

Can OSX have shared libraries in a system location? if so, try putting the SDL2 libs there which should definitely work - I know you want to bundle it all together but it will at least confirm this is a path issue and not something we're not guessing.