Oh, I mean, Code::Blocks has an option for "Execution working dir" [...] Through this, I should think I do understand "working directory" as it would be used for file paths within the executable.
If I understand its purpose, this option should not affect the resulting executable. Rather, it will only affect the working directory with which the process is launched through the IDE. It is an option that affects running the compiled code, not compiling it in the first place.
Now, using full strace (just "strace ./Launcher"), it seems that it detects the file correctly with an absolute path, but then it does a few things, and then it tries opening the file with some relative directory that wouldn't be correct anyways.
That relative directory is likely the working directory. Again, are you sure you understand the concept?
Do "man getcwd" and use it to print the working directory at the start of your program. Does it match the directory in which your shared object resides?