First of all, I am not a lawyer and I have no right to give legal advice. Consult your lawyers for legal advice.
However, the recommendations that I used in the past when programs could use libraries come down to the interaction between the definitions of "System Libraries" and "Corresponding Source" in the GPL:
The "system libraries" of an executable work include anything other than the work as a whole, which (a) is included in the usual form of packaging of the main component, but which is not part of this major component and (b) serve only to use the work with this Main component or for implementing a standard interface for which the implementation is available to the public in the form of source code. "Main component" in this context means an important important component (kernel, window system, etc.) of the specific operating system (if any) on which the executable work is performed, or the compiler used to produce work or the object code interpreter used to her launch.
An “appropriate source” for working in the form of object code means all the source code needed to create, install, and (for an executable file) run the object code and change the work, including scripts to control these activities. However, it does not include the work of System Libraries or general-purpose tools or generally accessible programs that are used unchanged in carrying out these activities, but which are not part of the work. For example, a correspondent source includes interface definition files associated with the source files for work and source code for shared libraries and dynamically linked to routines that are specifically designed to work, for example, by intimate data transfer or control flow between these routines and other parts of the work.
Now for the guide: if you can reasonably expect that the library will be available by default for almost every system, and the library is necessary for the system to work correctly, it is legal to link your program other than the GPL against the GPL library.
This is a pretty serious limitation. In practice, library authors who have chosen the GPL for their libraries are not interested in programs other than the GPL using their library. Such libraries are not often integrated into the system in such a way as to make the "Corresponding source" "System libraries" a clause that it is useful. (I cannot name any GPL-licensed libraries from my point of view, which I consider to be a vital system library.)
As for communication - I do not think that “communication” has ever been discussed in court. To be safe, you should not distribute proprietary code that works with GPL code in the same process. While C, C ++, etc. Make it pretty clear, I expect that most judges can be convinced that any language that regularly “requires” or “includes” a mechanism is the moral equivalent of “linking” - and direct inclusion of the source would definitely be the same intention "work in one process."