Send complex signal and receive the same complex signal

Hi, I’m working on a project where I want to send complex symbols like 4-QAM, 8-QAM or 16-QAM for example and demodulate those symbols, the idea is to use the signals as points (like in the constellation diagram) and use ML techniques to demodulate those points.
The problem is that because the signal is transmitted from one SDR to another, the local oscillator of each SDR is in a different frequency. And because the oscillators are not in phase, the imaginary part of the received signal (RX) is a mix of the real and imaginary part of the transmitted signal (TX), and the real part of the received signal (RX) is also a mix of the real and imaginary part of the transmitted signal (TX).
I would like to know how can I send a complex signal representing my complex symbols and receive the same complex signal. I’ve been trying using a costas loop and a polyphase clock sync, but nothing seems to work.

Note:
I’m using LimeSDR-Mini, and GNU radio.